次のファイル構造があるとします。
project/
- ticklers/
- kitten_tickler.py
- class KittenTickler
- puppy_tickler.py
- class PuppyTickler
KittenTickler が十分に複雑で、そのファイルを PuppyTickler と共有したくないと仮定します。定義されたクラスの完全修飾名はproject.ticklers.kitten_tickler.KittenTickler
およびになりproject.ticklers.puppy_tickler.PuppyTickler
ます。これは明らかに冗長です。複数のクラスを 1 つのファイルに詰め込むという通常の 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
してしまいます。したがって、私はこのアプローチにあまり満足していません。最後に、メンテナンス性はあまり高くありません。
私はここで負け戦を戦っていますか、それともこれらのクラスを満足のいくように宣言する方法はありますか?