python描述器
描述器的表現:用到三個魔術方法:__get__()、__set__()、__delete__()
方法簽名如下:
object.__get__(self,instance,owner)
object.__set__(self,instance,value)
object.__delete__(self,instance)
self指代當前實例,調用者;instance是owner的實例;owner是屬性所屬的類
python中,一個類實現了__get__、__set__、__delete__三個方法中的任何一個方法,就是描述器,如果僅實現了__get__,就是非數據描述器,同時實現了__get__、__set__就是數據描述器
描述器在python中應用非常廣泛,包括staticmethod()和classmethod()都實現為非數據描述器,因此,實例可以重新定義和覆蓋方法,這允許單個實例獲取與同一類的其他實例不同的行為
property()函數實現為一個數據描述器,因此,實例不能覆蓋屬性的行為
例一:使用描述器實現staticmethod裝飾器
例二、使用描述器實現classmethod裝飾器
例三、Person類的實例,實現對其屬性name,age進行數據校驗
?
轉載于:https://www.cnblogs.com/s-p-l/p/10260624.html
總結
- 上一篇: 爬虫之selenium和PhantomJ
- 下一篇: java文件下载以及中文乱码解决