getattr方法
__getattr__是只报错时处理那所有情况的处理呢 对于所有的属性访问,包括已定义的和未定义的属性,都可以通过重载Python的内置函数 __getattr__ 来进行处理。当访问一个未定义的属性时,Python会自动调用 __getattr__ 方法来处理这个属性的访问。
如果我们只想在访问一个不存在的属性时进行处理,可以使用 __getattr__ 方法。但是,如果我们想在访问已定义的属性时也进行处理,可以使用 __getattribute__ 方法。 __getattribute__ 方法会在访问任何属性时都被调用,而不仅仅是在访问不存在的属性时。
需要注意的是,在 __getattribute__ 方法中访问属性时,如果直接使用 self.attribute 的方式,会导致无限递归调用 __getattribute__ 方法,从而导致程序崩溃。因此,在 __getattribute__ 方法中访问属性时,需要使用 object.__getattribute__(self, attribute) 的方式来避免这种情况的发生。
总之, __getattr__ 方法只在访问不存在的属性时被调用,而 __getattribute__ 方法会在访问任何属性时都被调用。在使用 __getattribute__ 方法时需要特别注意避免无限递归调用的问题。
页:
[1]