私が継承したPython(2.7)コードをいくつかクリーンアップしています。コードは現在(インポート関数を悪用して)実行されていますが、それは面倒で、他のコードが特定の方法でアクセスしないときに問題を引き起こします。パッケージの循環依存関係を避ける
ファイル構造は基本的にこれです:
/deep/nested/path/__init__.py
/deep/nested/path/objects.py
/deep/nested/path/api.py
objects
は
api
が/取得objects
のインスタンスを作成するための機能で、開発者インターフェースを公開するデータモデルのコレクションです。
objects
の一部が子オブジェクトを作成する関数を呼び出す必要があるため、循環インポートが発生します。
このセクションでは解析を扱い、多くのオブジェクト(深い再帰)が実行されます。パッケージの名前空間もかなり入れ子になっています。そのため、パッケージのパスを使用すると、パフォーマンスに目に見える影響があります。
objects
が必要とするファクトリ関数をそのファイルに移動し、一般的な使用のためにapi
にインポートし直したいと思っています。それは私の問題を解決して(そしてドットをなくす)、(実際にはまともな)コード構成の一部を失うでしょう。私はいくつかの入力を与えるために目の別のセットを期待しています。
ここでは循環輸入に関するいくつかの質問がありますが、これを機能させることには関心がありません。私はドット記法を最小化することに懸念しています。 api.factory
およびobjects.foo
が動作しますが、package.api.factory
は発生しません。