python中__getattr__和__getattribute__的区别

python在访问类的属性上支持__getattr__和__getattribute__这两个魔术方法。

这两者的区别没有办法从名字上进行理解,但区别还是很大的。

__getattribute__()方法是在每次访问属性时都会调用。

__getattr__()方法是访问的属性不存在时才会调用。

通过__getattribute__可以记录每次访问属性,通过__getattr__可以在属性不存在时返回默认值。

2013年01月24日