2013-07-24 33 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'

相關問題