python描述器中__getattribute__調(diào)用
1、說(shuō)明
在Python中一切皆對(duì)象,所有對(duì)象都有一個(gè)默認(rèn)的方法__getattribute__(self,name)。
該方法會(huì)在我們使用.訪問(wèn)obj的屬性時(shí)會(huì)自動(dòng)調(diào)用,為了防止遞歸調(diào)用,它總是實(shí)現(xiàn)為從基類object中獲取object.__getattribute__(self,name),該方法大部分情況下會(huì)默認(rèn)從self的__dict__字典中查找name(除了特殊方法的查找)。
2、實(shí)例
描述器正是由__getattribute__()方法調(diào)用,其大致邏輯為:
def__getattribute__(self,key):
v=object.__getattribute__(self,key)
ifhasattr(v,'__get__'):
returnv.__get__(self)
returnv
重寫(xiě)__getattribute__()會(huì)阻止描述器的自動(dòng)調(diào)用。
以上就是Python描述器中__getattribute__調(diào)用,希望對(duì)大家有所幫助。更多Python學(xué)習(xí)推薦:請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。