【发布时间】:2021-05-05 16:10:25
【问题描述】:
我有一个主类和更多类,它们是主类的扩展。主类在其init中有两个参数,每个子类也使用这些参数+单独的参数
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) 等实际值迭代地初始化子类,但实际上不必手动输入它们。理想情况下,我可以遍历存储如下值的字典:
my_dict = {'Child1': {'var3': 3, 'var4': 4}, 'Child2': {'var5': 5}}
请注意,我只想像这样传递特定于类的变量。最后,我想要这样的东西:
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$)
【问题讨论】:
-
如果您发现自己正在寻找像这样强有力的解决方案来解决问题,那么您几乎总是最好重新考虑您的设计。这听起来像您可能在应该使用组合的地方滥用继承。
-
@Woodford 如果您有任何建议,我愿意接受。我如何将其更改为组合?
-
无法从您的帖子中看出。你只描述了做什么你想做什么,而不是为什么。
-
我希望能够初始化所有子类,以便稍后调用它们。
标签: python class for-loop initialization