问题描述
class MyClass:
def f1(self,int_arg):
return int_arg
def f2(self,list_arg):
return list_arg
def f3(self,int_arg,list_arg):
return int_arg + sum(list_arg)
这些函数的参数值是固定的:
int_arg = 1
list_arg = [1,2]
现在,我想通过以下方式遍历类的功能并执行它们:
for f in ['f1','f2','f3']:
out = getattr(MyClass(),f)(<arguments>)
解决方法
简而言之,您想知道函数接收哪些参数。
为此,您可以使用inspect.signature
:
from inspect import signature
def sub_dict(d,keys):
return dict((k,d[k]) for k in keys)
int_arg = 1
list_arg = [1,2]
params = dict(int_arg=int_arg,list_arg=list_arg)
for f in ['f1','f2','f3']:
func = getattr(MyClass(),f)
out = func(**sub_dict(params,signature(func).parameters))