我有一些我希望模块化的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()
内知道。
答案 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))