码迷,mamicode.com
首页 > 编程语言 > 详细

python 新式类的 __getattribute__

时间:2018-08-17 14:58:12      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:att   ror   attr   实例   *args   val   attribute   turn   div   

这个方法定义在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__

标签:att   ror   attr   实例   *args   val   attribute   turn   div   

原文地址:https://www.cnblogs.com/saolv/p/9493133.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!