[Python] 自定義具有字典或列表特性的類
阿新 • • 發佈:2021-12-06
總結記錄備忘
目錄
給類增加字典特性
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': '武將'}
給類增加列表特性
class MyList(object): def __init__(self, list_val): self.list = list_val def add_key(self, key_name): self.list.append(key_name) print(self.list) return "OK" def get_key(self, index): # 判斷傳入的索引是否超出了列表 if 0 <= index < len(self.list): return self.list[index] return "你輸入的太多了,想太多了" def update_list(self, new_list): self.list.extend(new_list) return self.list def del_key(self): # 首先要判斷我們的列表裡面還有元素 if len(self.list) >= 0: return self.list.pop(-1) else: return "列表是空的" list_info = MyList([1, 2, 3, 4, 5]) print(list_info.add_key(6)) print(list_info.update_list([8, 9, 10]))
輸出
[1, 2, 3, 4, 5, 6]
OK
[1, 2, 3, 4, 5, 6, 8, 9, 10]