如何避免在python中对依赖类进行循环导入?

时间:2018-08-29 12:55:17

标签: python python-import circular-dependency

请先阅读,然后再重复

我有一个配置为这样的目录:

app.py  
Modules/  
    __init__.py  
    a.py  
    b.py  

__ init__.py包含:

import a  
import b

和a.py包含:

import b
Class A():
    b_instance = b.B()`

和b.py包含:

import a
Class B():
    a_instance = a.A()`

整个/Modules文件夹是从主app.py导入的。

据我了解,执行将如下:
1. app.py import Modules
2. /Modules/__init__.py import a
3. /Modules/a.py import b
4. /Modules/b.py import a(看到sys.modules中已经存在a并继续)
5. /Modules/b.py执行类B()并尝试执行以下操作时失败:a_instance = a.A(),因为a.py在sys.modules中,但尚未执行class A,因此b.。 py无法访问Class A

那么,我如何才能有两个相互依赖的类,并且该依赖关系在该类的最高范围内链接(即不在类方法内)?

在线给出的解决方案假定类依赖关系出现在解决此问题的某个子方法中,因为在执行该特定功能之前不需要实际的类。我的问题的区别在于,类依赖关系直接在Class中,而不是在某些方法中,因此立即需要实际的类。

0 个答案:

没有答案