2

次のファイル構造があるとします。

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してしまいます。したがって、私はこのアプローチにあまり満足していません。最後に、メンテナンス性はあまり高くありません。

私はここで負け戦を戦っていますか、それともこれらのクラスを満足のいくように宣言する方法はありますか?

4

0 に答える 0