编写一个函数来初始化具有不确定输入的类?

时间:2016-11-14 01:17:01

标签: python python-3.x

我有三个以类似方式接收输入的类,但每个类使用不同数量的参数。因此,类1在其init函数中有7个参数,类2有4个,类3有5个,我想创建一个可以初始化其中任何一个的函数。我该怎么做呢?通常我会取参数列表,p [0],p [1]等,并将它们作为参数提供给类,但输入量不确定,我不知道如何做到这一点

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>