在我的项目中,我使用interaction
包含一些“接口”的模块来访问系统功能。例如,我有 2 个模块实现不同的接口,其中一个依赖于其他接口。
模块1.py:
value = 5
def init():
pass
def provide_int():
global value
return value
模块2.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