我试图了解何时使用__getattr__or __getattribute__。文档中提到的__getattribute__适用于新式类。什么是新式班?
__getattr__
__getattribute__
__getattr__和之间的一个关键区别__getattribute__是__getattr__只有在没有以通常方式找到属性时才会调用它。它有利于实现缺失属性的后备,并且可能是您想要的两个之一。
__getattribute__在查看对象的实际属性之前调用,因此正确实现可能很棘手。您可以很容易地以无限递归结束。
新式类派生自object,旧式类是 Python 2.x 中没有显式基类的类。但是在 和 之间进行选择时,旧式和新式类之间的区别并不是重要__getattr__的__getattribute__。
object
你几乎肯定想要__getattr__。