python找出值的屬性 python屬性查詢

2021-10-13 06:33:46 字數 734 閱讀 7076

python中執行obj.attr時,將呼叫特殊方法obj.__getattribute__('attr'),該方法執行搜尋來查詢該屬性,通常涉及檢查特性、查詢例項字典、查詢類字典以及搜尋基類。如果搜尋過程失敗,最終會嘗試呼叫類的__getattr__()方法。如果這也失敗,則丟擲attributeerror異常。

具體步驟如下:

1.如果attr是個特殊屬性(例如python提供的),直接返回。

2.在obj.__class__.__dict__即類字典中查詢attr,如果attr是個data描述符,則返回資料描述符的__get__方法結果。如果沒有,則繼續在obj.__class__的基類中尋找data描述符。注意要確定為data描述符,只實現了__get__方法的non-data描述符優先順序是在後面的。

3.在obj.__dict__即例項字典中查詢,找到就直接返回。如果是obj是乙個類,依次在obj和它的基類的__dict__中查詢,如果找到乙個descriptor就返回descriptor的__get__方法的結果,否則直接返回attr。如果沒有找到,進行下一步。

4.在obj.__class__.__dict__即類字典中查詢,如果找到了乙個non-data描述符,則返回描述符的__get__方法的結果。如果找到乙個普通屬性,直接返回屬性值。在obj基類中執行同樣的查詢。

5.raise attributeerror

總體上,先檢查物件的資料描述符,然後檢查例項字典,在檢查類和基類的非資料描述符,最後是類字典和基類的字典。

python屬性的預設值

python類的建構函式中屬性可以設定預設值,例項化出來的物件如果屬性使用預設值,預設值的位址是相同的。class a def init self,name self.name name property def name self return self.name a a b a c a d a ...

最大值 python找出幾個數最大值的方法

python找出幾個數中最大值的方法 1 簡單的使用if else進行判斷 list 12,34,2,0,1 max list 0 定義變數max用來儲存最大值,初始值賦值為列表中任意乙個值 for i in list if i max max i print 這個列表中最大值為 max 2 使用m...

python金融分析 用於金融分析的Python包

recommended by activestate.1.numpy 實現各種陣列物件函式和傅利葉變換等等科學計算模組。3.matplotlib 乙個跨平台的數值繪圖包,可繪製高質量的2d,3d影象。4.mysql for python python操作mysql資料庫的介面軟體包。5.pyqt 乙...