python - 使用多个构造函数和 **kwargs 进行子类化
问题描述
我正在尝试使用多个构造函数(使用@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)