通過繼承 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