假设我们有这个文件结构:
project/
- ticklers/
- kitten_tickler.py
- class KittenTickler
- puppy_tickler.py
- class PuppyTickler
假设 KittenTickler 具有足够的复杂性,不想与 PuppyTickler 共享其文件。已定义类的完全限定名称变为project.ticklers.kitten_tickler.KittenTickler
和project.ticklers.puppy_tickler.PuppyTickler
。这显然是多余的。它适用于将多个类填充到一个文件中的常用 Python 策略,但它不适合我的项目。有没有办法“跳过”模块链中的文件名,将内容聚合到puppy_tickler
模块中?最终,我对拥有和感兴趣。kitten_tickler
ticklers
project.ticklers.PuppyTickler
project.ticklers.KittenTickler
我尝试将其放入project/ticklers/__init__.py
:
from .kitten_tickler import KittenTickler
from .puppy_tickler import PuppyTickler
这导致它们在两个包中都可以访问KittenTickler.__module__
,但最终仍然是project.ticklers.kitten_tickler
(而我希望它为project.ticklers
)。另外,如果我这样做
from project.ticklers import KittenTickler
我也会无意中导入PuppyTickler
。所以我对这种方法不太满意。最后,它不是很可维护。
我是在这里打一场失败的战斗,还是有办法让我满意地宣布这些课程?