0

我正在尝试从 Python 中的字符串 调用函数,如Calling a function of a module from a string with the function's name in Python 中所述

不幸的是,这不起作用,Python 解释器会抛出一个错误: TypeError: 'str' object is not callable

def current(self, t):
    if self.iMode == None:
        return self.i
    else:
        return getattr(self, 'iMode')(t)

错误是指最后一行。iMode已设置为sinx(t),已在类中声明。

任何人都可以帮助我吗?

4

2 回答 2

2

从错误消息中可以明显看出您的属性设置为'sinx(t)'(字符串文字)。

您应该将其设置为函数引用sinx,这是一个可调用的。

但是,正如 zhangyangu 已经说过的,在您的示例中getattr()不需要使用。也许您真的想使用参数(字符串引用)而不是文字'iMode'

于 2013-07-24T12:58:11.727 回答
0

从错误中,您iMode是一个字符串。iMode不是一种方法。你的声明一定有问题。而且在课堂上可以用self.iMode,没必要用getattr

我想你可能会寻找像eval.

于 2013-07-24T12:16:43.997 回答