2012-06-18 21 views
3

我以前聽說過「模塊也只是類」。我有幾種情況,主要是單元測試和交互式解釋器實驗,我希望在變量中創建一個模塊,而不必創建任何外部文件。我想是這樣的:如何在Python中實例化一個模塊

>>> import sys 
>>> 
>>> m = sys.Module() # <- This is the class I want 
>>> m.foo = 'bar' 
>>> m 
<module 'm' (instantiated)> 
>>> 
>>> sys.modules['testmodule'] = m 
>>> 
>>> import testmodule 
>>> print testmodule.foo 
bar 

注:我知道我可以插入任何物體插入模塊字典,但我在創建一個模塊實例

+1

你從哪裏聽說模塊也是類?有一個ModuleType,但這不是一個Python ClassType或類似的。 –

+4

也許你的意思是「對象太多」? – jamylak

回答

9
>>> import types 
>>> help(types.ModuleType) 
>>> mymod = types.ModuleType("MyMod") 
>>> mymod 
<module 'MyMod' (built-in)> 
>>> 
0

也特別感興趣,只是答案的完整性,我注意到類型的工作,就像類(是他們班?),這意味着我可以這樣做:

>>> import sys 
>>> Module = type(sys) 
>>> 
>>> mymodule = Module('mymodule') 
>>> mymodule 
<module 'mymodule' (built-in)> 

可能不建議在實際應用中使用,但合作在交互式解釋器中是一個定時器無所謂

+2

回答你的問題,類型和「新風格」類是相同的。新式類是從內置的'object'類派生的類。舊式類(不是從'object派生的類)不是類型。在python3中,所有的類都是類型。 – bukzor