2009-05-25 50 views
3

FILE:b.py为什么不允许这样的导入?

class B: 
    def __init__(self): 
     print "B" 

import a 

a = A() 

FILE:a.py

class A(B):    ###=> B is not defined 
    def __init__(self): 
     print "A" 

当我尝试执行b.py,它说,B没有定义。我误解“进口”吗?

如果您能指出问题,非常感谢。

回答

5

最接近工作的事情对你的代码是:

==== FILE: b.py ==== 

class B: 
    def __init__(self): 
     print "B" 

import a 

if __name__ == "__main__": 
    a = a.A() 

==== FILE: a.py ==== 
import b 

class A(b.B):    ###=> B is not defined 
    def __init__(self): 
     print "A" 

注意区别:

  • 文件(模块)的命名空间,如果你输入“A”,你是指它的类A为“aA”。

  • 如果你想使用它,你需要在a.py中导入b。

你想要避免让两个模块需要包括对方,把所有东西放在同一个模块中,或者把它们分成更多的模块。另外,最好将所有导入都放在文件的头部,这使得这种操作变得不可能。

5

因为python在它自己​​的文件中初始化类A。它不像C或PHP,其中每个导入的模块基本上都粘贴到原始文件中。

您应该将类​​B放在与类A相同的文件中以解决此问题。或者你可以把class B放在c.py中,并用“from c import B”导入它。

+0

矿石使用该类的完整导入名称:a = a.A() – reto 2009-05-25 10:14:14

相关问题