__getattr__
获取一个对向不存在的属性值时,会自动触发此方法
__getattribute__
获取对象的属性值时自动触发,不论对象的这个属性是否存在
》获取不存在的属性值时,触发
》属性存在时,也触发
》意味着,只要有__getattribute__
在,__getattr__
永无出头之日
__getattribute__
放权给__getattr__
当两个方法共存的时候
getattr也可以生效的
需要他的老大getattribute给他放权才可
》如何放权?
只需要让老大抛出一个异常即可
》抛出什么异常?
我们引发一个错误
调一个不存在的对象属性,引发一个异常
记住异常的名字,就抛这个异常
》放权吧!
只要老大抛异常
哪怕是对象存在的属性,也可以进入到 getattr 中