你可以找到python3在应答文件的
object.__getattribute__,其中规定:
无条件调用以实现类实例的属性访问。如果该类也定义
__getattr__(),则不会调用后者,除非__getattribute__()显式调用它或引发AttributeError。此方法应返回(计算出的)属性值或引发AttributeError异常。为了避免此方法的无限递归,其实现应始终调用具有相同名称的基类方法以访问其所需的任何属性,例如object。__getattribute__(self,name)。注意
当通过语言语法或内置函数隐式调用的结果查找特殊方法时,仍然可以绕过该方法。请参阅特殊方法查找。
同时此页解释了这个“机器”是如何工作的。从根本上讲
__getattribute__,只有当您使用
.(点)运算符(以及
hasattrZagorulkin指出)访问属性时,才会调用该方法。
请注意,该页面未指定隐式查找哪些特殊方法,因此我认为所有这些方法均适用(您可以在此处找到)。



