我有一个函数模块,它有一些函数,所有函数都有一些公共输入,还有一些是它们特有的。e、 gdef func_a(time_series, window ='1D'):
def func_b(time_series, window ='1D', availability_history ):
def func_c(time_series, window ='1D', max_lag=25, use_probability ='T'):
我尝试在循环中运行这些函数,如下所示:
^{pr2}$
在另一个模块里class class_X(object):
def __init__(self, a, b, func_to_run):
self.a = a
self.ts = b
self.method = func_to_run
def generate_output(self, *args):
return self.method(self.ts, args) # time series is common and fixed for all, other params differ or change
上面的代码行不通,因为我认为需要更改我调用的函数来使用*args,而不是使用固定的定义参数。在
我认为*args是指输入参数数目未知的函数,但我试图在一个输入参数的数目已知,但在循环中不同函数不同的情况下使用它。在
如果我不必修改functions模块,并且仍然可以将所有必需的参数作为单个对象(e.g. list or tuple)传递,有没有解决这个问题的方法?在
编辑-
macromoonshine的答案是我可以用这样的夸克:def generate_output(self, **kwargs):
return self.method(self.ts, kwargs)
通过此修改,您可以调用generate_outputs(),如下所示:x.generate_outputs( window ='1D', max_lag=25, use_probability ='T')
其中xis是X类的一个实例
这是否可以增强,以便我可以传递参数而不是时间序列和窗口作为循环中的查找值,例如x.generate_outputs( window ='1D', params[iloop])
在哪里params[iloop] = max_lag=25, use_probability ='T'
我试着这么做:params = (30, "F")
x.generate_outputs( window, *params)
但是有个错误TypeError: generate_output() takes 1 positional argument but 4 were given