python 新式类的 __getattribute__
Posted 扫驴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 新式类的 __getattribute__相关的知识,希望对你有一定的参考价值。
这个方法定义在object中,所以所有的新式类都继承有该方法,所有的新式类的实例在获取属性value的时候都会调用该方法,为了验证这一结论,我们重写一下该方法:
class C(object): a = ‘abc‘ def __getattribute__(self, *args, **kwargs): print("__getattribute__() is called") return object.__getattribute__(self,args[0]) def __getattr__(self, name): print (‘hhh‘) if name == ‘adult‘: return True else: raise AttributeError(name) a=C() c=a.a#打印__getattribute__ is called 返回属性的value‘abc‘ b=getattr(a,‘adult‘,7)#先打印__getattribute__ is called,后打印hhh,b为True print b
而旧式类则无次方法,对象获取属性值时也不是通过这个方法获取的,而是另一套机智
以上是关于python 新式类的 __getattribute__的主要内容,如果未能解决你的问题,请参考以下文章
python__高级 : 类的__getattribute__ 方法
Python进阶-----类的内置方法__getattribute__
python------面向对象介绍之经典类与新式类的继承顺序