我遇到一个奇怪的问题,就是我无法在整个互联网上找到答案(或者我不知道该怎么问)。
我有AAA.py模块
from BBB import BBB
class AAA():
def test(self):
print 'AAAA'
a = BBB()
和模块BBB.py
class BBB():
def __init__(self):
print 'BBB'
然后当我打电话
a = AAA()
a.test()
一切正常,我看到输出
AAAA
BBB
但是,当我尝试从模块BBB.py导入并使用AAA类时
from AAA import AAA
class BBB():
def __init__(self):
print 'BBB'
我收到以下错误
ImportError: cannot import name AAA
有什么建议么?我无法在Python中创建循环依赖项吗?我在Ubuntu上使用Python 2.7.6版本
最佳答案
确实-如果AAA.py
从顶级BBB.py
导入某些内容,反之亦然,则它无法按预期工作。
有两种解决方法:
相互导入模块。这样,它们都作为名称空间出现,并将在导入过程中填充。
因此,只需执行import BBB
并使用BBB.BBB()
实例化该类:
import BBB
class AAA():
def test(self):
print 'AAAA'
a = BBB.BBB()
在需要的地方进行导入:
class AAA():
def test(self):
from BBB import BBB
print 'AAAA'
a = BBB()
这样,两个模块之间的链接就变得“松散”了,而且没有那么紧密。