使用多个构造函数和**Kwarg进行子类化

2024-06-01 00:45:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用多个构造函数(使用@classmethod构造函数)构建一个父类。一般来说,我对此没有问题,但这次我需要__init__方法来获取来自每个不同构造函数的任意关键字参数,因此我不能预先指定它们。然后,在整个代码中,使用各种构造函数多次对该类进行子类化。 问题是我似乎无法在子类中启动父类。我得到这个错误:

TypeError: __init__() got an unexpected keyword argument 'var1'

这是一个复制我的错误的简化示例:

class Test:
    def __init__(self, **kwargs):
        for key, value in kwargs.items():
            setattr(self, key, value)

    @classmethod
    def from_args(cls, var1):
        return cls(var1=var1)


class SubTest(Test):
    def __init__(self):
        super(SubTest, self).from_args('pie')


if __name__ == '__main__':
    obj = SubTest()
    print(obj.var1)

Tags: keyfromtestselfinitvaluedef错误