2

假设我们有这个文件结构:

project/
- ticklers/
  - kitten_tickler.py
    - class KittenTickler
  - puppy_tickler.py
    - class PuppyTickler

假设 KittenTickler 具有足够的复杂性,不想与 PuppyTickler 共享其文件。已定义类的完全限定名称变为project.ticklers.kitten_tickler.KittenTicklerproject.ticklers.puppy_tickler.PuppyTickler。这显然是多余的。它适用于将多个类填充到一个文件中的常用 Python 策略,但它不适合我的项目。有没有办法“跳过”模块链中的文件名,将内容聚合到puppy_tickler模块中?最终,我对拥有和感兴趣。kitten_ticklerticklersproject.ticklers.PuppyTicklerproject.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。所以我对这种方法不太满意。最后,它不是很可维护。

我是在这里打一场失败的战斗,还是有办法让我满意地宣布这些课程?

4

0 回答 0