Python中的属性引用

时间:2017-03-02 06:41:40

标签: python python-3.x

我对Python中的属性引用有些怀疑。我曾经认为instance.attribute中的属性引用是自下而上的方法。 首先在实例字典中查找该属性。但我正在阅读一篇文章,其中声称属性查找是自上而下的方法,即当引用属性时,Class.__getattribute__被称为第一步。此处instance是类Class

的实例

我的问题是(考虑类可能包含数据描述符或非数据描述符)

  1. 属性引用是自下而上还是自上而下
  2. 看起来两者都会给出类似的结果。我在这里纠正吗?

1 个答案:

答案 0 :(得分:0)

  

属性引用是自下而上还是自上而下

我不会将其归类为自下而上或自上而下。 Pythons __getattribute__首先在类字典中搜索,以便首先查找数据描述符(如果存在),然后在实例字典中搜索实例变量(如果没有找到数据描述符)。

  

看起来两者都会给出类似的结果

不,如果它是严格自下而上(实例优先)那么一个与数据描述符同名的实例变量会掩盖它。

如果它是自上而下的,那么与实例变量同名的非数据描述符会掩盖它。