我有一个非常重要的问题。例如: 我需要根据给定的字符串导入一个模块,我使用类似
的东西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方法怎么做呢,因为它太慢了?
答案 0 :(得分:6)
使用getattr
:
module = __import__('module')
func = getattr(module, 'func')
func()
如果您不是更通用的解决方案,请查看此文件中的get_object函数。您可以提供完整路径:get_object('module.submodule.function')
或相对路径和对象:get_object('submodule.function', module)
,它将返回所需的对象。