python對象屬性的查找順序
1、查找順序
(1)類和父類字典的數據描述器
(2)實例字典
(3)類和父類字典中的非數據描述器
無論類有多少個繼承級別,該類對象的實例字典總是存儲了所有的實例變量,這也是super的意義之一。
2、實例
defget_attribute(obj,name):
class_definition=obj.__class__
descriptor=None
forclsinclass_definition.mro():
ifnameincls.__dict__:
descriptor=cls.__dict__[name]
break
ifhasattr(descriptor,'__set__'):
returndescriptor,'datadescriptor'
ifnameinobj.__dict__:
returnobj.__dict__[name],'instanceattribute'
ifdescriptorisnotNone:
returndescriptor,'non-datadescriptor'
else:
raiseAttributeError
以上就是Python對象屬性的查找順序,希望對大家有所幫助。更多Python學習推薦:請關注IT培訓機構:千鋒教育。