0

我想在 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])

但我不知道如何在 callfunc 中调用“show1”或“show2”。因为 "show1" 和 "show2" 的 args 数量不同,而 "args" 是一个列表。

4

2 回答 2

5

一如往常。

def callfunc(self, f, args):
  f(*args)
于 2013-08-30T05:06:32.563 回答
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])

在这种情况下,可以动态确定和调用要调用的函数。

于 2013-08-30T05:43:15.143 回答