描述符是干啥的:
描述符本质上就是一个新式类,至少实现了 __get__() , __set__(), __delete__(), 这3个方法当中的一个。
描述符是用来代理另外一个类的属性的, 必须把描述符定义在另外一个类的属性当中,不能定义在构造函数里。
__get__调用属性触发
__set__设置属性触发
__delete__删除属性触发
描述符分为2种:
第一种,至少实现了 __get__() 和 __set__()
第二种,没有实现 __set__()
基本描述
class Foo: def __set__(self, instance, value): print(‘__set__‘) def __get__(self, instance, owner): print(‘__get__‘) def __delete__(self, instance): print(‘__delete__‘) class Demo: x=Foo() def __init__(self,x): self.x=x # self.x被代理, 设置 self.x=x,触发 Foo的 __set__()方法 d=Demo(10) d.x # 触发 Foo的 __get__()方法 del d.x # 触发 Foo的 __delete__()方法
原文:https://www.cnblogs.com/liangqingyun/p/14050820.html