[Python] 自定义具有字典或列表特性的类
目录
- 给类增加字典特性
- 给类增加列表特性
给类增加字典特性
import collections
class MyDict(collections.UserDict):
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
def __getattr__(self, key):
return self.data[str(key)]
if __name__ == '__main__':
dic = MyDict((('a', 1), ('c', ('d', 3)), ('b', 2)))
# 用列表方式初始化也可以
dic2 = MyDict([['name', '关羽'], ['age', 28], ['type', '武将']])
dic3 = MyDict()
# 可以像字典一样增加和修改键值对
dic['sds'] = 'dddd'
print(dic)
print(dic.a)
print(dic['a'])
print(dic2)
输出
{'a': 1, 'c': ['d', 3], 'b': 2, 'sds': 'dddd'}
1
1
{'name': '关羽', 'age': 28, 'type': '武将'}
给类增加列表特性
import collections
class MyList(collections.UserList):
pass
list_info = MyList([1, 2, 3, 4, 5])
list_info.append(6)
list_info.append([3, 8, 9, 10])
list_info[0] = 11
print(len(list_info))
print(list_info)
输出
7
[11, 2, 3, 4, 5, 6, [3, 8, 9, 10]]