0

1 つ大きな質問があります。例:指定された文字列に従って1つのモジュールをインポートする必要があり、次のようなものを使用します

string = 'testmodule'
module = __import__(string)

そして、それは機能します。次に、そのモジュールの関数を特定の文字列からも呼び出す必要があります

return module.function()

次のように作業する必要があります:

string = 'function'
module = 'testmodule'
return module.string()

私はexecを使用できることを知っており、現在は次のように使用しています

string = 'function'
module = 'testmodule'
exec('ret = ' + module + '.' + string + '()')

しかし、遅すぎるため、その exec メソッドを使用せずにそれを行うにはどうすればよいでしょうか?

4

1 に答える 1

6

使用getattr:

module = __import__('module')
func = getattr(module, 'func')
func()

より一般的な解決策が必要ない場合は、このファイルのget_object関数を参照してください。フル パスを指定することもget_object('module.submodule.function')、相対パスとオブジェクトget_object('submodule.function', module)を指定することもできます。目的のオブジェクトが返されます。

于 2013-09-21T18:59:43.477 に答える