1. 程式人生 > 實用技巧 >Python物件描述符

Python物件描述符

描述符是幹啥的:

描述符本質上就是一個新式類,至少實現了 __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__()方法