我想在Python中动态调用函数,代码如:
class A:
def show1(self, x) :
print x
def show2(self, x, y) :
print x, y
def callfunc(self, f, args) :
#TODO: call function f with args
pass
c = A()
c.callfunc(c.show1, [1])
c.callfunc(c.show2, [1,2])
但我不知道怎么打电话" show1"或" show2"在callfunc中。因为" show1"和" show2"有不同数量的args," args"是一个清单。
答案 0 :(得分:5)
def callfunc(self, f, args):
f(*args)
答案 1 :(得分:1)
如果可以将函数引用作为参数传递,则可以直接调用该函数。这是一种更灵活的方法
class A:
def show1(self, x) :
print x
def show2(self, x, y) :
print x, y
def callfunc(self, f, args) :
return getattr(self, f)(*args)
c = A()
c.callfunc("show1", [1])
c.callfunc("show2", [1,2])
在这种情况下,可以动态确定和调用要调用的函数。