假设我有一个这样的模块:
module
├── __init__.py
└── submodule
├── B.py
├── __init__.py
└── subsubmodule
├── A.py
└── __init__.py
具有以下文件内容:
module/submodule/subsubmodule/A.py
class A:
pass
module/submodule/subsubmodule/__init__.py
from .A import A
module/submodule/__init__.py
from .subsubmodule import A
from .B import B
module/submodule/B.py
class B:
pass
module/__init__.py
from .submodule import A, B
当我导入模块时,我希望类A和B立即在顶层可用。按照我设置的方式,效果很好。但我最终还是submodule在module. 为什么?这是可以还是有问题?对我来说它看起来不干净。我可以避免这种情况吗?
In [1]: import module
In [2]: dir(module)
Out[2]:
['A',
'B',
'__builtins__',
'__cached__',
'__doc__',
'__file__',
'__loader__',
'__name__',
'__package__',
'__path__',
'__spec__',
'submodule'] # <------------ why is that here?
我说from .submodule import A, B在__init__.py的module。我从来没有说过from . import submodule。所以中间模块显然被拖到了命名空间中。是否应该避免这种情况,如果是的话如何避免。
临摹微笑
相关分类