ホームページ >バックエンド開発 >Python チュートリアル >Python で循環インポート依存関係を解決する方法: よくある落とし穴
循環インポート依存関係: よくある Python の落とし穴
循環インポート依存関係に遭遇すると、特にモジュールが相互接続されることが多い Python ではイライラすることがあります。このような例の 1 つは、パッケージの __init__.py が別のパッケージをインポートするときに、その 2 番目のパッケージ内のファイルが最初のパッケージをインポートしようとするときに発生します。
指定されたディレクトリ構造を考慮してください。
a/ __init__.py b/ __init__.py c/ __init__.py c_file.py d/ __init__.py d_file.py
__init__.py、c パッケージがインポートされます。ただし、c パッケージ内にある c_file.py は、a.b.d をインポートしようとします。この循環依存関係により、実行時に b が存在しないというエラーが発生します。
問題の解決
解決策の 1 つは、インポートを延期することです。たとえば、/__init__.py では、次のような関数を定義できます。
<code class="python">def my_function(): from a.b.c import Blah return Blah()</code>
絶対に必要になるまでインポートを遅らせることで、循環依存関係を回避できます。ただし、パッケージデザインを再検討することも賢明です。このような依存関係は、設計上の欠陥やリファクタリングの必要性を示す場合があります。
以上がPython で循環インポート依存関係を解決する方法: よくある落とし穴の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。