私のプロジェクトではinteraction
、システム機能にアクセスするための「インターフェース」を含むモジュールを使用しています。たとえば、2 つのモジュールが異なるインターフェイスを実装しており、そのうちの 1 つは他のインターフェイスに依存しています。
module1.py :
value = 5
def init():
pass
def provide_int():
global value
return value
module2.py :
def init():
import interaction
global value
value = str(interaction.int_provider.provide_int())
def provide_string():
global value
return value
だから私はそれを同じように使いたい:
相互作用.py :
from importlib import import_module
globals()['int_provider'] = import_module('module1')
globals()['int_provider'].init()
globals()['str_provider'] = import_module('module2')
globals()['str_provider'].init()
したがって、初期化中にmodule2
(init関数を呼び出す)、循環インポートのためにImportErrorが発生します。この例はもちろん合成ですが、一般的な状態は同じです。
2 つの質問があります: 1.インターフェイスをプロキシする
ように「グローバル」モジュールを使用するのは正しい方法ですか?
2. この循環インポートを無効にするにはどうすればよいですか?interaction.py