2
我知道我們可以使用exec來快速加載模塊(從字符串)如何隨時導入類並將其實例化爲對象?
例如,
path = 'A.B'
class = 'C'
exec("from %s import %s" %(path, class))
但我怎麼能實例化它作爲一個對象c?順便說一句,超過從一個字符串加載模塊的最佳方式?它看起來不太安全。感謝
問候, 約翰
我知道我們可以使用exec來快速加載模塊(從字符串)如何隨時導入類並將其實例化爲對象?
例如,
path = 'A.B'
class = 'C'
exec("from %s import %s" %(path, class))
但我怎麼能實例化它作爲一個對象c?順便說一句,超過從一個字符串加載模塊的最佳方式?它看起來不太安全。感謝
問候, 約翰
對於Python < = 2.6,則可以使用內置的__import__
功能:
m = __import__('A.B', globals(), locals(), ['C'])
C = getattr(m, 'C')
c = C()
import importlib
m = importlib.import_module('A.B')
C = getattr(m, 'C')
c = C()
您可以從2.7標準庫得到導入庫,如果你在一個較低的版本,一些奇怪的原因。
尼斯的答案。這是一個合理的方法。 –
我正在使用2.6.4,這是我唯一的選擇恐怕... – John
難道是「Debian stable不包含Python 2.7」嗎? :) –