我正在使用getattr根据变量
调用不同的
函数.
我做这样的事情:
getattr(foo,bar) ()
这样工作,调用函数foo.bar()
我的问题是我有’bar’功能,我想用不同的参数调用它.例如:
def f1() :
pass
def f2(param1) :
pass
def f3(param1,param2) :
pass
所以’bar’可以是f1,f2或f3
我试过这个:
假设params是包含“bar”函数所需的所有参数的列表
getattr(foo,bar) (for p in params :)
我正在看一个“干净”的解决方案,没有必要看看params变量的长度
你可以尝试一下:
getattr(foo,bar)(*params)
如果params是列表或元组,那么这个方法起作用.来自params的元素将按顺序解包:
params=(1,2)
foo(*params)
相当于:
params=(1,2)
foo(params[0],params[1])
如果有关键字参数,你也可以这样做.
getattr(foo,bar)(*params,**keyword_params)
其中,keyword_params是一个字典.
此外,这个答案真的独立于getattr.它将适用于任何功能/方法.