0

我有两个 py 文件。a.py 和 b.py 在名为 test (has __init__.py)的包中

我想访问下面 a.py 中定义的属性 self.items

import b

class Window(object):
    def __init__(self):
        self.items={'Magenta':'mag','Grey':'gre','Red':'red'}
    def getMats():
        newobj=b.BAR()
        selected = newobj.type_of_mats[1]

从不同的 py 文件 b.py[below] 所以在 b.py 我导入了 a 模块,即

import a

#now 

obj = a.Window()
print obj.items['Magenta']
class BAR(object):
    def myMat(self):
        type_of_mats=['ground', 'corridor', 'Outdoor']

上面不应该打印 mag 因为或者我应该怎么做?

4

3 回答 3

1

请参阅有关循环导入(a)(b)的这些 stackoverflow 问题。我认为这取决于所使用的编译器/解释器。在我的情况下,您的代码没有给我超出递归深度,但这确实

希望能帮助到你。

于 2012-12-10T10:05:51.310 回答
0

循环导入。a.py进口bb.py进口a。鸡/蛋问题!而 python 无法为您解决这个问题,因此它会警告您最大递归深度(它不断地从 a 跳到 b 到 a 到 b 到 a...)。

您必须修复它,以便导入仅是单向的。

于 2012-12-10T10:00:05.530 回答
0

你有一个循环依赖:ais importing b,它又是 importing a。由于这两个导入处于模块级别,因此它们永远无法完成。

在您的情况下,您可以通过将其import b移入getMats方法来修复它。

于 2012-12-10T10:00:22.357 回答