Python物件屬性的查詢順序

2021-10-22 14:14:42 字數 901 閱讀 5945

1、查詢順序

(1)類和父類字典的資料描述器

(2)例項字典

(3)類和父類字典中的非資料描述器

無論類有多少個繼承級別,該類物件的例項字典總是儲存了所有的例項變數,這也是 super 的意義之一。

2、例項

def get_attribute

(obj, name)

: class_definition = obj.__class__

descriptor = none

for cls in class_definition.

mro():

if name in cls.__dict__:

descriptor = cls.__dict__[name]

break

ifhasattr

(descriptor,

'__set__'):

return descriptor,

'data descriptor'

if name in obj.__dict__:

return obj.__dict__[name]

,'instance attribute'

if descriptor is not none:

return descriptor,

'non-data descriptor'

else

: raise attributeerror

以上就是python物件屬性的查詢順序,希望對大家有所幫助。

python 物件的屬性

python一切皆物件 object 每個物件都可能有多個屬性 attribute python的屬性有一套統一的管理方案。物件的屬性可能來自於其類定義,叫做類屬性 class attribute 類屬性可能來自類定義自身,也可能根據類定義繼承來的。乙個物件的屬性還可能是該物件例項定義的,叫做物件屬...

順序查詢(python)

根據python中列表查詢某乙個數 alist 1,2,3,4,5,6,3,8,9 sign false 初始值為沒找到 x int input 請輸入要查詢的整數 for i in range len alist if alist i x print 整數 d在列表中,在第 d個數 x,i 1 s...

python屬性查詢

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