创建命名空间 |在文件级别扩展名称树

问题描述 投票:0回答:1

例如,在

C++
中我们可以写

namespace MilkyWay{
    namespace AlphaCentauri {
        int Planets = 4;
    }
    namespace SolarSys {
        int Planets = 8;
    }
}

然后将其用作

MilkyWay::SolarSys::Planets

有没有办法在

namespace
中写出类似
C++
的内容?或者换句话说,是否有可能不仅在文件夹嵌套级别上扩展名称树,而且还可以在单个文件级别上扩展名称树?

或者。假设我们有以下结构:

sound/                          Top-level package
  __init__.py               Initialize the sound package
  formats/                  Subpackage for file format conversions
          __init__.py
          wavread.py
          wavwrite.py
          ...
  effects/                  Subpackage for sound effects
          __init__.py
          echo.py
          surround.py
          ...
  filters/                  Subpackage for filters
          __init__.py
          equalizer.py
          vocoder.py
          ...

我可以做

from sound.formats import wavread
但为什么我做不到
from sound import formats

python namespaces python-packaging
1个回答
0
投票

好吧,我的问题类似于在Python中导入包

交易是

但是,找到包目录后,它不会扫描该目录并自动导入所有 .py 文件。

因此,为了完成这项工作,我们需要添加到

__init__.py
所需的子模块(
.py
文件),以便 python 导入它。

例如文件

sound/formats/__init__.py
必须包含

from . import wavread, wavwrite

现在

from sound import formats

formats.wavread.do_smth()

会很好用

© www.soinside.com 2019 - 2024. All rights reserved.