1. 程式人生 > >python 新式類的 __getattribute__

python 新式類的 __getattribute__

重寫 調用 true urn 驗證 pri return 機智 args

這個方法定義在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__