Python物件描述符
阿新 • • 發佈:2020-11-28
描述符是幹啥的:
描述符本質上就是一個新式類,至少實現了 __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__()方法