Python中的描述符主要有三種類型:數據描述符、非數據描述符和帶屬性的描述符。
__set__()
方法但沒有定義__get__()
方法,那么它就是一個數據描述符。數據描述符的主要作用是控制屬性的賦值操作。__get__()
方法但沒有定義__set__()
方法,那么它就是一個非數據描述符。非數據描述符的主要作用是控制屬性的獲取操作。__set__()
、__get__()
和__delete__()
方法,那么它就是一個帶屬性的描述符。帶屬性的描述符可以同時控制屬性的賦值、獲取和刪除操作。需要注意的是,描述符必須是一個具有特殊方法的類,即必須至少實現__get__()
、__set__()
或__delete__()
中的一個方法。此外,描述符還可以繼承自Python內置的property()
函數,該函數本身就是一個帶屬性的描述符。