python中__getattribute__如何设置属性

python中__getattribute__如何设置属性
python中__getattribute__如何设置属性

1、说明

这个方法将会拦截所有获取的属性的操作,包括未定义的属性;

属性内置函数允许我们将方法与特定类属性的获取和集合操作相关联;

属性描述符为特定的类的属性提供了一组__get__和 __set__方法访问协议;

实例属性在类中声明但是在每一个类的对象实例中隐式存储。

2、实例

class AttrManager:
    def __getattribute__(self, item):
        """
        :param item:
        :return:
        避免产生递归循环引用,不要使用self.attr_name对属性进行访问或者设置,属性访问会经过这个方法
        这里没有保存数据,因此返回的时候是None
        """
        print("call  __getattribute__ for item[%s] " % item)def test_attr_manager():
    manager = AttrManager()
    manager.name = "attr manager name"
    print(manager.name)
    print(manager.age)if __name__ == '__main__':
    test_attr_manager()>>> python attr.py  # 2.x与3.x的不同输出

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注