Descriptor

比较易懂的说明Python descriptor

官方文档

定义:符合descriptor protocol的对象(object)都称为descriptor,实际上就是实现了__get__(),__set__(),__delete__()中的一种或者多种的对象都可以看作descriptor。(需要注意的是descirptor只能被new-style class调用)

 

作用:取代默认的属性访问(attribute access)方式。python中,当你访问x.name时,默认的访问方式为:

(1)x.__dict__['name']

(2)type(x).__dict__['name']

(3)tpye(x)的所有baseclass的__dict__['name']

所以当你为type(x)的name属性绑定descriptor后(x=descriptor()),访问x.name不再按照上面的访问方式访问,而是调用descriptor的__get__方法,如果没有定义__get__方法,则返回descriptor本身。

你可能感兴趣的:(script)