python __get__ & __set__

目的: html

  提供相似java中的getter/setter的東西。java

  (getter/setter的目的: 將屬性方法化,使得屬性的引用變得簡單---尤爲未來屬性的讀取/賦值有比較複雜的邏輯)python

 

官方簡明文檔:函數

  https://docs.python.org/2/howto/descriptor.htmlhtm

英文比較好介紹(前因後果細節): blog

  http://martyalchin.com/2007/nov/23/python-descriptors-part-1-of-2/ip

 

概要:文檔

  1. 實現屬性/變量的方法化get

  2. python的處理略奇怪(經過外部descripter類實現),但也不奇怪。class

  3. 由於考慮到不容許在運行的時候修改引用類,因此只有__get__函數有引用類(reffer_obj_type)的參數傳入

  

def __get__(self, refer_obj, refer_obj_type):
    pass

  4. descripter類的實例,(初心)最好被其引用着類的類調用,而不是被引用者的實例調用。

然而引用者的實例調用它也沒有啥不妥(此時refer_obj參數不爲None)

相關文章
相關標籤/搜索