__hasattr__(self, item)
点号拦截运算,注:这是一个绑定对象方法
在一个类中,如果类里定义了该方法(大多数内置类是没有的),则这个类生成的对象加点调用属性或方法时,如果调用的名字不存在,不会报错,会执行__hasattr__()这个方法。
class Person(object): def __init__(self,name): self.name = name def __getattr__(self, item): print('调用了一个不存在的属性或方法:%s'%item) return 'error' alex = Person('alex') print(alex.age)
> 调用了一个不存在的属性或方法:age
> error
__setattr__(self, key, value)
赋值拦截运算,注:这是一个绑定对象方法
如果类里定义了该方法,则这个类生成的对象进行赋值运算时,无论调用的名字是否存在都会执行,都会执行__setattr__()。此时如果想实现原有的对象属性赋值功能应按照下面代码写:
class Person(object): def __setattr__(self,key,value) self.__dict__['key'] = value