標籤:

Python 魔法方法--定製屬性訪問控制

Python有很多黑魔法,本文來介紹其中三個,它們都用於定製屬性訪問控制。

object.__getattr__(self, name)

當一個屬性查找無法在通常的地方(比如,該屬性不是實例的屬性,或者也沒有在類樹上找到)找到該屬性的時候,這個函數就被調用了。name是該屬性的名字。這個函數應該返回計算後的屬性的值或者拋出AttributeError異常。

object.__getattribute__(self, name)

當要去實施類的實例屬性訪問的時候,就會調用(無特定限制條件)。如果這個類也定義了__getattr__(),那麼後者不會被調用,除非__getattribute__()明確地調用或者拋出AttributeError異常。這個方法會返回計算後的屬性的值或者拋出AttributeError異常。為了避免此方法中無限的循環,它的實現應該始終用相同的名字調用基類方法去訪問任意它需要的對象。

object.__setattr__(self, name)

當視圖指定屬性值的時候,調用該函數。

object.__delattr__(self, name)

刪除屬性的時候調用

object.__dir__(self)

實例將後續添加

推薦閱讀:

GeoPython 下載安裝、操作講解和視頻演示
ABSP第七章:[lesson25續:替換,更為複雜的正則表達式還有一個練手project]
十行以內,你寫過哪些比較酷的 Python 代碼?
學習python有什麼好的視頻?
Python 開發之VSCode安裝(一)

TAG:Python |