提问人:MPEI_stud 提问时间:7/25/2023 最后编辑:MPEI_stud 更新时间:7/25/2023 访问量:27
创建命名空间 |在文件级别扩展名称树
Create namespace | Extend name tree at file level
问:
例如,我们可以将C++
namespace MilkyWay{
namespace AlphaCentauri {
int Planets = 4;
}
namespace SolarSys {
int Planets = 8;
}
}
然后将其用作MilkyWay::SolarSys::Planets
有没有办法写出类似 in 的东西?或者换句话说,是否有可能不仅在文件夹嵌套级别,而且在单个文件级别扩展名称树?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
答:
1赞
MPEI_stud
7/25/2023
#1
好的,我的问题类似于在 Python 中导入包
这笔交易是
但是,找到包目录后,它不会扫描该目录并自动导入所有 .py 文件。
因此,要完成这项工作,我们需要添加到所需的子模块(文件)中,以便 python 导入它。__init__.py
.py
例如,文件必须包含sound/formats/__init__.py
from . import wavread, wavwrite
现在
from sound import formats
formats.wavread.do_smth()
会正常工作
感谢@deceze
评论
从声音导入格式
?”— 但你可以!?formats.wavread.do_smth()
AttributeError: module 'formats' has no attribute 'wavread'
from sound.formats import wavread
wavread.do_smth()
from sound import formats
sound/formats/__init__.py
from . import wavread
__init__.py