python描述器
描述器的表現(xiàn):用到三個(gè)魔術(shù)方法:__get__()、__set__()、__delete__()
方法簽名如下:
object.__get__(self,instance,owner)
object.__set__(self,instance,value)
object.__delete__(self,instance)
self指代當(dāng)前實(shí)例,調(diào)用者;instance是owner的實(shí)例;owner是屬性所屬的類
python中,一個(gè)類實(shí)現(xiàn)了__get__、__set__、__delete__三個(gè)方法中的任何一個(gè)方法,就是描述器,如果僅實(shí)現(xiàn)了__get__,就是非數(shù)據(jù)描述器,同時(shí)實(shí)現(xiàn)了__get__、__set__就是數(shù)據(jù)描述器
描述器在python中應(yīng)用非常廣泛,包括staticmethod()和classmethod()都實(shí)現(xiàn)為非數(shù)據(jù)描述器,因此,實(shí)例可以重新定義和覆蓋方法,這允許單個(gè)實(shí)例獲取與同一類的其他實(shí)例不同的行為
property()函數(shù)實(shí)現(xiàn)為一個(gè)數(shù)據(jù)描述器,因此,實(shí)例不能覆蓋屬性的行為
例一:使用描述器實(shí)現(xiàn)staticmethod裝飾器
例二、使用描述器實(shí)現(xiàn)classmethod裝飾器
例三、Person類的實(shí)例,實(shí)現(xiàn)對(duì)其屬性name,age進(jìn)行數(shù)據(jù)校驗(yàn)
?
轉(zhuǎn)載于:https://www.cnblogs.com/s-p-l/p/10260624.html
總結(jié)
- 上一篇: 爬虫之selenium和PhantomJ
- 下一篇: python基础学习笔记——方法返回值