返回信息流#python2.7
class Descriptor(object):
def __get__(self, obj, type=None):
pass
def __set__(self, obj, val):
pass
def __delete__(self, obj):
pass
class C(object):
d = Descriptor()
e = 'access class attr'
def __init__(self):
self.d = 'object attr'
self.e = 'access object attr'
if __name__ == "__main__":
c = C()
print c.d
c.d = "test"
print c.d
print c.e
Output:
None
None
access object attr
这是一条镜像帖。来源:北邮人论坛 / python / #8345同步于 2015/8/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
[问题]描述符,求详解
huimeizhex
2015/8/26镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
python data属性查找策略obj.attr:
1.默认产生的属性(__doc__, __dict__等)
2.查找obj.__class__.__dict__,如果能找到descriptor的__get__,直接返回结果,否则步骤3
3.查找obj.__dict__
4.步骤1,2,3都没结果raise AttributeError
简单来说无论是obj.attr的查询还是赋值,类对象(obj.
__class__)属性中的descriptor优先级比实例对象(obj)属性的优先级高
不知道这样解释lz清楚了木有