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