我对Python中的属性引用有些怀疑。我曾经认为instance.attribute
中的属性引用是自下而上的方法。
首先在实例字典中查找该属性。但我正在阅读一篇文章,其中声称属性查找是自上而下的方法,即当引用属性时,Class.__getattribute__
被称为第一步。此处instance
是类Class
我的问题是(考虑类可能包含数据描述符或非数据描述符)
答案 0 :(得分:0)
属性引用是自下而上还是自上而下
我不会将其归类为自下而上或自上而下。 Pythons __getattribute__
首先在类字典中搜索,以便首先查找数据描述符(如果存在),然后在实例字典中搜索实例变量(如果没有找到数据描述符)。
看起来两者都会给出类似的结果
不,如果它是严格自下而上(实例优先)那么一个与数据描述符同名的实例变量会掩盖它。
如果它是自上而下的,那么与实例变量同名的非数据描述符会掩盖它。