通过一张图,让读者理解在对象在查找一个属性的顺序过程

Python属性描述符以及属性查找顺序_IO多路复用

代码如下


class IntField:
    def __get__(self, instance, owner):
        pass
    def __set__(self, instance, value):
        self.value = value
        pass
    def __delete__(self, instance):
        pass

class NonIntField:
    def __get__(self, instance, owner):
        pass

class User:
    age = IntField(23)
    age = NonIntField(23)
    age = 20

    def __init__(self, age):
        self.age = age
        
    def __getattr__(self, item):
        pass

if __name__ == '__main__':

    user = User(23)
    print(user.age)

上面的代码未必真的能运行,是将所有的情况都列出来放在了一起,用于对比.


个人站点

公众号
Python属性描述符以及属性查找顺序_IO多路复用_02