【Python046--魔法方法:描述符】
阿新 • • 發佈:2018-11-13
一、描述符的定義:
描述符就是將特殊型別的類的例項指派給另外一個類的屬性
1、舉例:
特殊型別的類要實現以下三個方法中的其中一個或者全部實現
* __get__(self,instance,owner)
--用於訪問屬性,它返回屬性的值
* __set__(self,instance,value)
--用於設定屬性,不返回任何內容
* __delete__(self,instance)
--控制刪除操作,不返回任何內容
class MyDecriptor: def __get__(self,instance,owner):#列印檢視描述符的get,set,delete方法中各個引數的含義 print("getting...",self,instance,owner) def __set__(self,instance,value): print("setting...",self,instance,value) def __delete__(self,instance): print("deleteing...",self,instance) class Test: #把特殊類MyDecriptor的例項指派給Test類的x屬性 x = MyDecriptor() 執行結果:>>> test = Test() >>> test.x getting... <__main__.MyDecriptor object at 0x10a2186d8> <__main__.Test object at 0x10a208f60> <class '__main__.Test'> >>> test <__main__.Test object at 0x10a208f60> >>> Test <class '__main__.Test'> ''' |--由打印出來的getting...,可以看出來,引數self是MyDecriptor的物件(<__main__.MyDecriptor object at 0x10a2186d8>) |--引數instance是Test的物件(<__main__.Test object at 0x10a208f60>) |--引數owner是Test的本類自己(<class '__main__.Test'>) |--具體可由物件test打印出來的內容,和Test類打印出來的內容得到驗證 |--set和delete同理''' >>> test.x = "X-man" setting... <__main__.MyDecriptor object at 0x10a2186d8> <__main__.Test object at 0x10a208f60> X-man >>> del test.x deleteing... <__main__.MyDecriptor object at 0x10a2186d8> <__main__.Test object at 0x10a208f60> >>>
2、二次舉例:實現property