如何访问不同py文件的类构造函数中初始化的属性?

时间:2012-12-10 09:40:56

标签: python oop

我有两个py文件。 a.py和b.py在名为test(包含__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 [下面]所以在b.py我导入了一个模块,即

import a

#now 

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

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

3 个答案:

答案 0 :(得分:1)

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

希望它有所帮助。

答案 1 :(得分:0)

循环导入。 a.py再次导入bb.py导入a。鸡/蛋问题!并且python无法为你解决这个问题,因此它会警告你最大递归深度(它一直从a跳到b到a到b跳到......)。

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

答案 2 :(得分:0)

您有循环依赖关系:a正在导入b,而a又导入import b。由于这两个导入处于模块级别,因此无法完成。

在您的情况下,您可以通过将getMats移动到{{1}}方法来解决此问题。