python 再访问属性的方法上定义了__getattr__() 和 __getattribute__() 2种方法,其区别非常细微,但非常重要。
- 如果某个类定义了
__getattribute__()方法,,在 每次引用属性或方法名称时 Python 都调用它(特殊方法名称除外,因为那样将会导致讨厌的无限循环)。 - 如果某个类定义了
__getattr__()方法,找不到的时候再去访问,Python 将只在正常的位置查询属性时才会调用它。如果实例 x 定义了属性 color,x.color将 不会 调用x.__getattr__('color');而只会返回 x.color 已定义好的值。
本文深入探讨了Python中两种属性访问方法:__getattr__() 和 __getattribute__() 的使用及区别。这两种方法虽然相似但在属性查找机制上有细微差别,__getattr__() 在属性未找到时被调用,而 __getattribute__() 则在每次属性被引用时都会触发。
676

被折叠的 条评论
为什么被折叠?



