我有三个以类似方式接收输入的类,但每个类使用不同数量的参数。因此,类1在其init函数中有7个参数,类2有4个,类3有5个,我想创建一个可以初始化其中任何一个的函数。我该怎么做呢?通常我会取参数列表,p [0],p [1]等,并将它们作为参数提供给类,但输入量不确定,我不知道如何做到这一点
答案 0 :(得分:1)
在不判断您的设计概念的情况下,我认为实现这一目标的合理方法是编写一个变量为args
的函数并检查它们的长度,即:
def initializer(*args):
num_args = len(args)
if num_args == 7:
return Class1(*args)
elif num_args == 5:
return Class3(*args)
elif num_args == 4:
return Class2(*args)
else:
# handle this unsupported scenario
相应地处理错误案例。
使用一些示例类:
class Class3:
def __init__(self, a, b, c, d, e):
print(a, b, c, d, e)
class Class2:
def __init__(self, a, b, c, d):
print(a, b, c, d)
class Class1:
def __init__(self, a, b, c, d, e, f, g):
print(a, b, c, d, e, f, g)
您将获得所需的效果:
>>> initializer(1, 2, 3, 4)
1 2 3 4
<__main__.Class2 at 0x7fe8e450ed68>
>>> initializer(1, 2, 3, 4, 5)
1 2 3 4 5
<__main__.Class3 at 0x7fe8e450ee80>
>>> initializer(1, 2, 3, 4, 5, 6, 7)
1 2 3 4 5 6 7
<__main__.Class1 at 0x7fe8e450e518>