2011-10-31 66 views
2

我知道我們可以使用exec來快速加載模塊(從字符串)如何隨時導入類並將其實例化爲對象?

例如,

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

但我怎麼能實例化它作爲一個對象c?順便說一句,超過從一個字符串加載模塊的最佳方式?它看起來不太安全。感謝

問候, 約翰

回答

4

對於Python < = 2.6,則可以使用內置的__import__功能:

m = __import__('A.B', globals(), locals(), ['C']) 
C = getattr(m, 'C') 
c = C() 
1
import importlib 
m = importlib.import_module('A.B') 
C = getattr(m, 'C') 
c = C() 

您可以從2.7標準庫得到導入庫,如果你在一個較低的版本,一些奇怪的原因。

+0

尼斯的答案。這是一個合理的方法。 –

+0

我正在使用2.6.4,這是我唯一的選擇恐怕... – John

+0

難道是「Debian stable不包含Python 2.7」嗎? :) –