python __getattribute__ 和 __getattr__的区别

来源:互联网 发布:李莎昮子扒皮 知乎 编辑:程序博客网 时间:2024/05/17 05:12

python 再访问属性的方法上定义了__getattr__() 和 __getattribute__() 2种方法,其区别非常细微,但非常重要。

  1. 如果某个类定义了 __getattribute__() 方法,,在 每次引用属性或方法名称时 Python 都调用它(特殊方法名称除外,因为那样将会导致讨厌的无限循环)。
  2. 如果某个类定义了 __getattr__() 方法,找不到的时候再去访问,Python 将只在正常的位置查询属性时才会调用它。如果实例 x 定义了属性 color, x.color 将 不会 调用x.__getattr__('color');而只会返回 x.color 已定义好的值。
0 0