我之前听说“模块也只是课程”。我有一些情况,主要是单元测试和交互式解释器实验,我想在变量中创建一个模块,而不必创建任何外部文件。我想象的是:
>>> 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
注意:我知道我可以将任何对象插入模块dict,但我特别感兴趣的是创建模块实例
答案 0 :(得分:11)
>>> import types
>>> help(types.ModuleType)
>>> mymod = types.ModuleType("MyMod")
>>> mymod
<module 'MyMod' (built-in)>
>>>
答案 1 :(得分:1)
另外,只是为了答案的完整性,我注意到类型就像类一样工作(它们是类吗?),这意味着我可以这样做:
>>> import sys
>>> Module = type(sys)
>>>
>>> mymodule = Module('mymodule')
>>> mymodule
<module 'mymodule' (built-in)>
可能不建议在现实世界的应用程序中使用,但可以在交互式解释器中节省时间