4

我之前听说过“模块也只是类”。我有几种情况,主要是单元测试和交互式解释器实验,我想在变量中创建一个模块,而不必创建任何外部文件。我想像:

>>> 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

注意:我知道我可以将任何对象插入模块字典,但我对创建模块实例特别感兴趣

4

2 回答 2

11
>>> import types
>>> help(types.ModuleType)
>>> mymod = types.ModuleType("MyMod")
>>> mymod
<module 'MyMod' (built-in)>
>>>
于 2012-06-18T12:56:09.033 回答
1

另外,为了答案的完整性,我注意到类型就像类一样工作(它们是类吗?),这意味着我可以这样做:

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

可能不建议在现实世界的应用程序中使用,但在交互式解释器中仍然可以节省时间

于 2012-06-18T13:36:45.697 回答