如何在运行中导入类并将其实例化为对象?

时间:2011-10-31 22:06:21

标签: python module

我知道我们可以使用exec在运行中加载模块(来自字符串)

e.g。

path  = 'A.B'
class = 'C'
exec( "from %s import %s" %(path, class) )

但我如何将其实例化为对象c?顺便说一下,是从字符串加载模块的最佳方法吗?它看起来不太安全。谢谢

的问候, 约翰

2 个答案:

答案 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,原因有些奇怪。