python __getattr__与__getattribute__的区别
在Python中,__getattr__
和__getattribute__
都是用于访问对象属性的特殊方法,但它们在实现和使用上有一些重要的区别。
1. __getattr__
__getattr__
是一个在访问对象的属性时被调用的特殊方法。它接收一个属性名作为参数,并在试图访问一个不存在的属性时被调用。主要用途包括:
- 动态属性访问: 可以在类中定义
__getattr__
方法来动态计算、生成属性值。 - 默认属性行为: 当对象的某些属性不存在时,可以通过
__getattr__
提供默认值或者实现懒加载。
示例:
class Example:
def __getattr__(self, name)