ベース/dir1/a.py
from base.dir2.b import B
class A:
def get_peer(self):
return B()
ベース/dir2/b.py
from base.dir1.a import A
class B:
def get_peer(self):
return A()
これは実際には、非常に複雑なツリー内のピア関係を表しています。A はリーフ ノードのタイプで、B は別のタイプのリーフ ノードです。お互いをピアとして持つことができます。
循環インポートがあるため、これは機能しません。
A と B の両方が循環的なインポートを引き起こすことなく互いにインスタンス化できるように、最適なプロジェクト構造は何かを理解しようとしています。
編集:次のように見えないソリューションが本当に欲しいです:
import base
class A:
def get_peer(self):
return base.dir2.b.B()
その道をたどり始めると、実際のコードでは深刻な混乱が生じます。