我知道我们可以使用exec在运行中加载模块(来自字符串)
e.g。
path = 'A.B'
class = 'C'
exec( "from %s import %s" %(path, class) )
但我如何将其实例化为对象c?顺便说一下,是从字符串加载模块的最佳方法吗?它看起来不太安全。谢谢
的问候, 约翰
答案 0 :(得分:4)
对于python< = 2.6,您可以使用内置的__import__
函数:
m = __import__('A.B', globals(), locals(), ['C'])
C = getattr(m, 'C')
c = C()
答案 1 :(得分:1)
import importlib
m = importlib.import_module('A.B')
C = getattr(m, 'C')
c = C()
如果您使用较低版本,可以从2.7标准库获取importlib,原因有些奇怪。