2013-07-24 35 views
0

我想从Python中的字符串调用函数,如 Calling a function of a module from a string with the function's name in Python中所述。从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),已在课堂上声明。

任何人都可以帮助我吗?

+2

你能发表声明的部分吗? – zhangyangyu

+0

也许你应该把'iMode'分配给'sinx'而不是sinx(t)。 – cdarke

+0

您应该使用'self.iMode是None'而不是'=='。 – chepner

回答

0

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

我想你可能会寻找像eval这样的功能。

3

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

您应该将其设置为功能参考sinx,而不是可调用的。

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

相关问题