代码之家  ›  专栏  ›  技术社区  ›  user997112

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

  •  0
  • user997112  · 技术社区  · 6 年前

    我有一些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)
    

    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)
    

    s 只在里面知道 my_method()

    1 回复  |  直到 6 年前
        1
  •  1
  •   Barmar    6 年前

    传递一个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))