特殊的类方法
__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

浙公网安备 33010602011771号