如何根据可变数量的参数创建不同的类类型

时间:2018-06-08 21:42:47

标签: python

我有一些我希望模块化的python代码:

list1 = []
list2 = []
list3 = []
.
.
.
for s in list3:

    if object in list1:
        e = Class1(arg1, arg2, s)
    else:
        e = Class2(arg3, arg4, arg5, s)

    x(e)
    y(e)
    z(e)

我想替换IF语句,以便我可以将FOR循环和body放在一个方法中并传入e,即使它可以是两个类中的一个:

def my_method(self, list, e):

    for object in list:
        x(e)
        y(e)
        z(e)

然后只需调用my_method()两次,一次用于list1,再次用于list2:

# How/where do I "create" e1 and e2, given I need s, which is inside my_method()?
my_method(list1, e1)
my_method(list2, e2)

但是,我不确定如何创建/传入e,因为它可以代表两种不同的类类型,使用不同数量的参数,最后一个参数s仅在my_method()内知道。

1 个答案:

答案 0 :(得分:1)

传递lambda

def my_method(self, list, callback):
    for object in list:
        e = callback(object)
        x(e)
        y(e)
        z(e)

my_method(list1, lambda s: Class1(arg1, arg2, s))
my_method(list2, lambda s: Class2(arg3, arg4, arg5, s))
相关问题