今天就跟大家聊聊有關(guān)getitem和getattr如何在Python中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站制作服務(wù),網(wǎng)站設(shè)計,綿陽服務(wù)器托管等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對手中脫穎而出創(chuàng)新互聯(lián)。1、getitem 方法
使用這個方法大的印象就是調(diào)用對象的屬性可以像字典取值一樣使用中括號['key']
使用中括號對對象中的屬性進(jìn)行取值、賦值或者刪除時,會自動觸發(fā)對應(yīng)的__getitem__、__setitem__、__delitem__方法
代碼如下:
class Foo(object): def __init__(self): self.name = 'jack' def __getitem__(self,item): if item in self.__dict__: # item = key,判斷該key是否存在對象的 __dict__ 里, return self.__dict__[item] # 返回該對象 __dict__ 里key對應(yīng)的value def __setitem__(self, key, value): self.__dict__[key] = value # 在對象 __dict__ 為指定的key設(shè)置value def __delitem__(self, key): del self.__dict__[key] # 在對象 __dict__ 里刪除指定的key f1 = Foo() print(f1['name']) # jack f1['age'] =10 print(f1['age']) # 10 del f1['name'] print(f1.__dict__) # {'age': 10}
2、getattr 方法
使用對象取值、賦值或者刪除時,會默認(rèn)的調(diào)用對應(yīng)的__getattr__、__setattr__、__delattr__方法。
對象取值時,取值的順序為:先從object里__getattribute__中找,第二步從對象的屬性中找,第三步從當(dāng)前類中找,第四步從父類中找,第五步從__getattr__中找,如果沒有,直接拋出異常。
代碼如下:
class Foo(object): def __init__(self): self.name = 'jack' def __getattr__(self, item): if item in self.__dict__: return self.__dict__[item] def __setattr__(self, key, value): self.__dict__[key] = value def __delattr__(self, item): del self.__dict__[item] c1 = Foo() print(c1.name) # jack c1.age = 18 print(c1.age) # 18 del c1.age # 刪除 對象c1的age print(c1.age) # None
看完上述內(nèi)容,你們對getitem和getattr如何在Python中使用有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道,感謝大家的支持。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。