zoukankan      html  css  js  c++  java
  • 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

     而旧式类则无次方法,对象获取属性值时也不是通过这个方法获取的,而是另一套机智

  • 相关阅读:
    悲观锁乐观锁实战
    悲观锁
    乐观锁
    mysql数据库怎么设置乐观锁
    猴子吃桃问题
    算法题
    面试总结
    分布式系统理论(二):一致性协议Paxos
    职工工资管理
    79-WordSearch
  • 原文地址:https://www.cnblogs.com/saolv/p/9493133.html
Copyright © 2011-2022 走看看