使用Python文档中的结构:
sound/
__init__.py
effects/
__init__.py
echo.py
surround.py
reverse.py
Run Code Online (Sandbox Code Playgroud)
说我想要import sound.effects并获得可用效果的列表.我可以在声明模块级变量做到这一点sound.effects,然后当每个.py文件导入追加到它.所以声音/效果/ __ init__.py可能是这样的:
effectList = []
import echo
import surround # Could write code to import *.py instead
...
Run Code Online (Sandbox Code Playgroud)
从我的主代码我现在可以访问sound.effects.effectList以获取效果列表,但如何effectList从echo.py中访问以进行实际追加?我被困在试图访问变量:
# None of these work :-(
# from . import self
# from .. import effects
# import sound.effects
sound.effect.effectList.append({'name': 'echo'})
Run Code Online (Sandbox Code Playgroud)
人们在这种情况下通常做的是在模块中创建一个common.py文件.
sound/
__init__.py
effect/
__init__.py
common.py
echo.py
surround.py
reverse.py
Run Code Online (Sandbox Code Playgroud)
然后将代码移动__init__.py到common.py:
effectList = []
import echo
import surround # Could write code to import *.py instead
...
Run Code Online (Sandbox Code Playgroud)
在里面__init__.py你有这个:
from common import *
Run Code Online (Sandbox Code Playgroud)
所以现在echo.py你有这个:
import common
common.effectList.append({'name': 'echo'})
Run Code Online (Sandbox Code Playgroud)
任何导入声音的东西都会像这样使用它
import sound.effect
for effect_name,effect in sound.effect.effectlist.items():
#....
Run Code Online (Sandbox Code Playgroud)
我自己刚开始使用它,但我相信这是python社区的常见做法.