反射相关的魔术方法
__getattr__()
获取属性,类的属性会按照MRO顺序找,找不到的话会执行getattr()方法,未设置的话,则会抛出AttributeError异常。
__setattr__()
设置属性,拦截对属性的增加,修改操作,属性要加到实例的dict()中,需要自己完成.
__delattr__()
可以阻止通过实例删除属性的操作,但是通过类依然可以删除属性。
__getattribute__()
实例的所有属性访问,第一个都会调用getattribute() 方法,他阻止了属性的查找,该方法应该返回(计算后)值或者抛出一个AttributeError异常.