使用多个构造函数和 **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)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)