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类不可编辑,失败。

如果未键入自身,则应使用
。As
if not key in dict:
询问
key
是否在类
dict
中,该类As类不可编辑,失败。

if not key in dict
中的
dict
dict
类型。如果不键入self
,您可能打算编写
。如果不键入dict
中的
dict
就是
dict
类型。如果不输入self,您可能打算编写
。谢谢!这就是问题所在。谢谢!这就是问题所在。