如何为 class 初始化动态添加参数?

How to dynamically add arguments to class initialization?

我有一个主 class 和进一步的 class 是主 class 的扩展。主 class 在其 init 中有两个参数,每个子 classes 也使用这些参数 + 单独的参数

class Main:
    def __init__(self, var1, var2):
        self.var1 = var1
        self.var2 = var2

class Child1(Main):
    def __init__(self, var1, var2, **kwargs):
        super().__init__(var1, var2)
        self.__dict__.update(kwargs)
        self.var3 = var3
        self.var4 = var4

class Child2(Main):
    def __init__(self, var1, var2, **kwargs):
        super().__init__(var1, var2)
        self.__dict__.update(kwargs)
        self.var5 = var5

我希望能够通过传递 Child1(var1 = 1, var2 = 2, var3 = 3, var4 = 4)Child2(var1 = 1, var2 = 2, var5 = 5) 等实际值来迭代初始化子 classes,但实际上不必手动输入它们。理想情况下,我可以遍历存储如下值的字典:

my_dict = {'Child1': {'var3': 3, 'var4': 4}, 'Child2': {'var5': 5}}

请注意,我只想像这样传递 class 特定变量。最后,我想有这样的东西:

var1 = [1, 2, 3, 4]
var2 = [1, 2]
for x,y, (k,v) in product(var1, var2, my_dict.items()):
    v(var1 = x, var2 = y, $fill missing keyword arguments in here that are specific to child class$)

我实际上能够自己解决这个问题。我能够在 my_dict 上使用解包来动态填充缺少的参数。

**for x,y, (k,v) in product(var1, var2, my_dict.items()):
    v(var1 = x, var2 = y, **v)