Python 子类化dict会导致错误TypeError:参数类型为';类型';这是不可容忍的
我试图对Python 子类化dict会导致错误TypeError:参数类型为';类型';这是不可容忍的,python,python-3.x,dictionary,typeerror,Python,Python 3.x,Dictionary,Typeerror,我试图对dict进行子类化,但在尝试重写\uuu getitem\uuu函数时,我在主题中遇到了错误。我获得了派生类的初始实现 其思想是检查键是否存在(键是由2个字符串组成的元组),如果不存在,则将键添加到字典并返回其值。字典的值是通过对键的串联字符串调用eval()获得的。顺便说一句,我知道默认字典的存在(在这种情况下可能会有所帮助),但我想做的不同。这是密码 class DictSubclass(dict): def __init__(self, *args, **kwargs):
dict
进行子类化,但在尝试重写\uuu getitem\uuu
函数时,我在主题中遇到了错误。我获得了派生类的初始实现
其思想是检查键是否存在(键是由2个字符串组成的元组),如果不存在,则将键添加到字典并返回其值。字典的值是通过对键的串联字符串调用eval()
获得的。顺便说一句,我知道默认字典的存在(在这种情况下可能会有所帮助),但我想做的不同。这是密码
class DictSubclass(dict):
def __init__(self, *args, **kwargs):
self.update(*args, **kwargs)
def __getitem__(self, key):
if not key in dict:
fn = '{}_{}'.format(key[0], key[1])
dict.__setitem__(key,eval(fn))
val = dict.__getitem__(self, key)
return val
def __setitem__(self, key, val):
dict.__setitem__(self, key, val)
def __repr__(self):
dictrepr = dict.__repr__(self)
return '%s(%s)' % (type(self).__name__, dictrepr)
def update(self, *args, **kwargs):
for k, v in dict(*args, **kwargs).items():
self[k] = v
为什么会出现以下错误
line 21, in __getitem__
if not key in dict:
TypeError: argument of type 'type' is not iterable
如果未键入self:,则应使用
。As如果未键入dict:
询问键是否在类dict
中,该类As类不可编辑,失败。如果未键入自身,则应使用。Asif not key in dict:
询问key
是否在类dict
中,该类As类不可编辑,失败。if not key in dict
中的dict
是dict
类型。如果不键入self
,您可能打算编写。如果不键入dict
中的dict
就是dict
类型。如果不输入self,您可能打算编写。谢谢!这就是问题所在。谢谢!这就是问题所在。