淺談Python類的__getitem__和__setitem__特殊方法
一個(gè)有點(diǎn)繞的例子,用PyScripter調(diào)試器步進(jìn)跟蹤可以看清楚對(duì) 象結(jié)構(gòu)的具體細(xì)節(jié)。
對(duì)原作改變了一下,在未定義子對(duì)象屬性時(shí)__getitem__中使用現(xiàn)成的__setitem__來(lái)定義。
## encoding:utf-8 """ 這個(gè)類繼承了object, object是Python的最小單元,可以在Python的">>>"控制臺(tái)用dir(objct)或者dir (__builtins__.object)命令查看它的屬性,可以看到__setattr__, __new__...他們是python中任何對(duì)象都會(huì)具有的屬性,你也可以dir(1)和dir(int)看看,可看到更多內(nèi)容,在這里,1作為一個(gè)實(shí)例化的int對(duì)象出現(xiàn)。而這些__xxx__屬性有什么用呢?在接下來(lái)的代碼中,我們可以了解__getitem__和__setitem__有什么用 (這兩個(gè)屬性在dict對(duì)象中非常重要) """ class WPUnit(object): def __init__(self): self._res={} def __setitem__(self,key,val): self._res[key]=val def __getitem__(self,key): if self._res.has_key(key): return self._res[key] else: r=WPUnit() self.__setitem__(key,r) return r a=WPUnit() a['a']['b']['c']['d']['e']['f']['g']=5 print a['a']['b']['c']['d']['e']['f']['g']
>>> class testsetandget: kk = {}; def __getitem__(self, key): return self.kk[key]; def __setitem__(self, key, value): self.kk[key] = value; >>> a = testsetandget() >>> a['first'] = 1 >>> a['first'] 1 >>> a.__setitem__('second', 2) >>> a.__getitem__('second') 2 >>> a['second'] 2 >>>
以上就是小編為大家?guī)?lái)的淺談Python類的__getitem__和__setitem__特殊方法全部?jī)?nèi)容了,希望大家多多支持腳本之家~
相關(guān)文章
Python爬蟲(chóng)采集微博視頻數(shù)據(jù)
這篇文章主要介紹了利用Python爬蟲(chóng)采集微博的視頻數(shù)據(jù),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)python的小伙伴們有很好地幫助,需要的朋友可以參考下2021-12-12Python初學(xué)者需要注意的事項(xiàng)小結(jié)(python2與python3)
這篇文章主要介紹了Python初學(xué)者需要注意的事項(xiàng)小結(jié),包括了python2與python3的一些區(qū)別,需要的朋友可以參考下2018-09-09python3 http.client/server post傳輸json問(wèn)題
這篇文章主要介紹了python3 http.client/server post傳輸json問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09python網(wǎng)絡(luò)編程socket實(shí)現(xiàn)服務(wù)端、客戶端操作詳解
這篇文章主要介紹了python網(wǎng)絡(luò)編程socket實(shí)現(xiàn)服務(wù)端、客戶端操作,結(jié)合實(shí)例形式分析了python基于socket實(shí)現(xiàn)服務(wù)端、客戶端相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2020-03-03python讀取圖片顏色值并生成excel像素畫的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于python讀取圖片顏色值并生成excel像素畫的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02Pandas?DataFrame.drop()刪除數(shù)據(jù)的方法實(shí)例
pandas作為數(shù)據(jù)分析強(qiáng)大的庫(kù),是基于numpy數(shù)組構(gòu)建的,專門用來(lái)處理表格和混雜的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Pandas?DataFrame.drop()刪除數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-07-07Python?Ruby?等語(yǔ)言棄用自增運(yùn)算符原因剖析
這篇文章主要為大家介紹了Python?Ruby?等語(yǔ)言棄用自增運(yùn)算符原因剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08