代码之家  ›  专栏  ›  技术社区  ›  Greg

如何在dict的构造函数中用额外的参数正确初始化dict的子类?

  •  1
  • Greg  · 技术社区  · 7 年前

    这个问题已经有了答案:

    使用 similar approach to a previous question about subclassing a float class 在dict中不产生键。例如:

    class Foo(dict):
        def __new__(cls, value, extra):
            return super().__new__(cls, value)
    
        def __init__(self, value, extra):
            dict.__init__(value)
            self.extra = extra
    

    跑步 Foo({'a':1}, 1).keys() 返回空的dict键 dict_keys([]) .

    如何在python中用额外的参数正确地将dict子类化?

    1 回复  |  直到 7 年前
        1
  •  1
  •   wim    7 年前

    更改行:

    dict.__init__(value)
    

    致:

    dict.__init__(self, value)
    

    还要考虑组合而不是继承,因为您正在脱离 dict 这里(见 LSP )中。