无法更新字典
Cannot update dictionary
我有一个 dict_ class 试图复制内置字典 class。
这里是class(new
函数returns原对象):
class dict_:
def __init__(self, *args, **kwargs):
self.kv = kwargs
if not self.kv:
for kv in args:
for k, v in kv:
self.kv.update({k: v})
def __str__(self):
return "%s" % self.kv
def __getitem__(self, item):
return self.kv[item]
def update(self, *args):
self.kv.update(args)
我是这样称呼它的:
from Dodger.dodger import *
term = new(System())
a = new(dict_(a=1, b=2))
a.update(new(dict_(c=3)))
term.println(a)
这应该将 a 修改为 {"a": 1, "b": 2, "c": 3}
但它却给我这个错误:
Traceback (most recent call last):
File "C:/free_time/Dodger/dodger_test.py", line 5, in <module>
File "C:\free_time\Dodger\dodger.py", line 176, in update
File "C:\free_time\Dodger\dodger.py", line 173, in __getitem__
KeyError: 0
为什么会报KeyError? 0是什么意思? (我正在使用 python 3.8.2)
我想出了解决这个问题的方法。我也只需要实施 __setitem__
:
def __setitem__(self, key, value):
"""Set self[key] to value"""
self.kv[key] = value
我有一个 dict_ class 试图复制内置字典 class。
这里是class(new
函数returns原对象):
class dict_:
def __init__(self, *args, **kwargs):
self.kv = kwargs
if not self.kv:
for kv in args:
for k, v in kv:
self.kv.update({k: v})
def __str__(self):
return "%s" % self.kv
def __getitem__(self, item):
return self.kv[item]
def update(self, *args):
self.kv.update(args)
我是这样称呼它的:
from Dodger.dodger import *
term = new(System())
a = new(dict_(a=1, b=2))
a.update(new(dict_(c=3)))
term.println(a)
这应该将 a 修改为 {"a": 1, "b": 2, "c": 3}
但它却给我这个错误:
Traceback (most recent call last):
File "C:/free_time/Dodger/dodger_test.py", line 5, in <module>
File "C:\free_time\Dodger\dodger.py", line 176, in update
File "C:\free_time\Dodger\dodger.py", line 173, in __getitem__
KeyError: 0
为什么会报KeyError? 0是什么意思? (我正在使用 python 3.8.2)
我想出了解决这个问题的方法。我也只需要实施 __setitem__
:
def __setitem__(self, key, value):
"""Set self[key] to value"""
self.kv[key] = value