python 内置方法:__getattr__和__setattr__
在python中,有时候会遇到内置方法:__getattr__、 __setattr__和__delattr__方法。
1 class Conf: 2 3 def __getattr__(self, item): 4 return item 5 def __setattr__(self, key, value): 6 self.__dict__[key]=value 7 def __delattr__(self, item): 8 self.__dict__.pop(item,None) 9 conf=Conf() 10 11 print(conf.evil) 12 conf.tom=22 13 print(conf.tom) 14 del conf.tom 15 print(conf.tom)
当我们通过访问一个对象的点.属性的时候,是通过__dict__里寻找,如果__dic__里没有的话,会找该对象的类方法中,是否有内置方法__getattr__。如果有,会将上面的conf.evil中的evil当做变量传入到方法
__setatrr__中,即赋值上例子中的item,关于__setattr__是通过给对象.xx=yy的形式的 将 xx、yy当做变量传入上例子中__setattr__并设置,当我们操作del 对象.xx的时候,会自动将xx 当做实参传入到
Conf的__delattr__方法。
如上的__setattr__ 、__getattr__、__delattr__方法和内置方法:__setitem__、__getitem__和__delitem__方法一样,唯一区别是:前者是用点.来操作而后者是用[]字典的形式来进行的。
学习是一种态度,坚持是质变的利器!

浙公网安备 33010602011771号