对象属性的访问顺序:
1.实例属性
2.类属性
3.父类属性
4.__getattr__()方法
示例:
class Desc(object):
def __get__(self, instance, owner):
print("__get__…")
print("self : \t\t", self)
print("instance : \t", instance)
print("owner : \t", owner)
print('='*40, "\n")
def __set__(self, instance, value):
print('__set__…')
print("self : \t\t", self)
print("instance : \t", instance)
print("value : \t", value)
print('='*40, "\n")
class TestDesc(object):
x = Desc()
#以下为测试代码
t = TestDesc()
t.x
#以下为输出信息:
__get__…
self : <__main__.Desc object at 0x0000000002B0B828>
instance : <__main__.TestDesc object at 0x0000000002B0BA20>
owner : <class '__main__.TestDesc'>
实例化类TestDesc后,调用对象t访问其属性x,会自动调用类Desc的 __get__方法,由输出信息可以看出:
# self: Desc的实例对象,其实就是TestDesc的属性x
# instance: TestDesc的实例对象,其实就是t
# owner: 即谁拥有这些东西,当然是 TestDesc这个类,它是最高统治者,其他的一些都是包含在它的内部或者由它生出来的
未经允许不得转载:天府数据港官方信息博客 » python描述符
客官点个赞呗! (0)