目的: 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)