我有一个测试环境来尝试了解如何避免 python 循环依赖import x
项使用语句导入模块,而不是使用from x import y
:
test/
__init__.py
testing.py
a/
__init__.py
m_a.py
b/
__init__.py
m_b.py
这些文件具有以下内容:
测试.py:
from a.m_a import A
m_a.py:
import b.m_b
print b.m_b
class A:
pass
m_b.py:
import a.m_a
print a.m_a
class B:
pass
有一种情况我无法理解:
如果我从模块中删除打印语句m_a.py
和m_b.py
/或仅从此m_b.py
工作正常,但如果打印存在于m_b.py
,则引发以下错误:
File "testing.py", line 1, in <module>
from a.m_a import A
File "/home/enric/test/a/m_a.py", line 1, in <module>
import b.m_b
File "/home/enric/test/b/m_b.py", line 3, in <module>
print a.m_a
AttributeError: 'module' object has no attribute 'm_a'
你有什么想法?