自定義dict類

通過繼承 collections.UserDict 來實(shí)現(xiàn)自己的dict類,通過重寫一些特殊方法來定制自己的dict的功能

import collections

class StrKeyDict(collections.UserDict):
    """ 
    A customized class inherted fron UserDict,
    get value by converting int type of key to str.
    E.g..

        mydict = StrKeyDict({'1':'one'})
        mydict[1]
    output: 'one'
    """
    def __missing__(self, key):
        if isinstance(key, str):
            raise KeyError(key)
        return self[str(key)]

    def __contains__(self, key):
        return str(key) in self.data
    
    def __setitem__(self, key, item):
        self.data[str(key)] = item


if __name__ == '__main__':
    mydict = StrKeyDict((('1','one'),('2','two')))
    print(mydict[1])
    print(1 in mydict)
    mydict[3] = 'three'
    print(mydict)

這個(gè)字典類實(shí)現(xiàn)了,通過int類型鍵取不到值時(shí),將鍵轉(zhuǎn)換為str類型取值。同時(shí)也包括, set 和 in的操作,有相應(yīng)的功能。
源自于流暢的python

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,692評(píng)論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,824評(píng)論 18 399
  • 下午我和媽媽去東花園玩了,晚上爸爸請(qǐng)我們一家去吃大蝦,我在吃大蝦的地方是小二上蝦結(jié)果果然不出我所料,在我...
    Le0nard0閱讀 275評(píng)論 0 2
  • 她是墜入凡間的天使,因媽媽的愛重生 攝影最重要的不是相機(jī) 而在于愛、創(chuàng)意和技巧 今天我們講一個(gè)小女孩的故事 新西蘭...
    色譜沙龍閱讀 844評(píng)論 0 1
  • 7.21 星期五 晴(98) 寫了一個(gè)多小時(shí)的作業(yè),兒子沒有要休息的意思,于是提醒兒子該休息會(huì)了,要注...
    王界程閱讀 184評(píng)論 0 0

友情鏈接更多精彩內(nèi)容