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学习推荐:python教学
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)