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

时间:2019-04-17 22:31:22

标签: python python-3.x class dictionary subclass

使用similar approach to a previous question about subclassing a float class不会在字典中产生任何键。例如:

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_keys([])

如何在Python中使用额外的参数正确地将字典子类化?

1 个答案:

答案 0 :(得分:1)

更改行:

dict.__init__(value)

收件人:

dict.__init__(self, value)

还要考虑使用组合而不是继承,因为您在这里脱离了dict的API(请参阅LSP)。