0

我有一个非常大的问题。例如:我需要根据给定的字符串导入一个模块,我使用类似的东西

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 回答