0

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)

誰でも私を助けてもらえますか?

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 に答える