1

ベース/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()

その道をたどり始めると、実際のコードでは深刻な混乱が生じます。

4

2 に答える 2