python 新式類的 __getattribute__
阿新 • • 發佈:2018-08-17
重寫 調用 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__