我有一個字符串type
,其值爲「MBSquareObject」。 MBSquareObject
是名爲MBObject
的文件中的類。我想動態導入MBSquareObject
。從字符串中用Python導入模塊
如果正方形物體在它自己的文件,這個工程:
__import__(type)
不過,我想要做的是from MBObject import MBSquareObject
等同。但是,這不起作用:
from MBObject __import__(type)
我還能怎麼做?
編輯:給出的答案假定MBSquareObject是MBObject上的某種對象,但它只是另一個類。 MBSquareObject是MBObject的一個子類,因此它們被列在同一個文件中。
編輯:由於某種原因,沒有答案正在工作。下面是我有:
# this is imported at the top of the file
from MBObject import MBObject
type = 'MBSquareObject'
__import__('MBObject', globals(), locals(), [type])
object_class = eval(type)
object = object_class()
錯誤:NameError:名字 'MBSquareObject' 沒有定義
等待對不起,我應該指定:MBSquareObject是一個類,MBObject的一個子類。他們只是放在同一個文件中。 – Snowman
@mohabitar文件叫什麼?如果它被命名爲'MBObject.py',那麼這應該工作。在這種情況下,MBObject指的是模塊名稱,而不是類名稱。 –
@mohabitar:在這種情況下,您需要編輯您的問題以更清楚地解釋您要做的事情。 '從MBObject導入MBSquareObject'將從一個名爲'MBObject'的*模塊導入一個東西(類,數字,字符串等等)。你知道你想要導入的模塊的名稱,還是必須動態確定,如果是這樣,如何? (也就是說,你是從模塊中單獨確定模塊還是以某種方式鏈接?) – BrenBarn