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没有定义。我误解“进口”吗?
如果您能指出问题,非常感谢。
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没有定义。我误解“进口”吗?
如果您能指出问题,非常感谢。
最接近工作的事情对你的代码是:
==== 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。
你想要避免让两个模块需要包括对方,把所有东西放在同一个模块中,或者把它们分成更多的模块。另外,最好将所有导入都放在文件的头部,这使得这种操作变得不可能。
因为python在它自己的文件中初始化类A。它不像C或PHP,其中每个导入的模块基本上都粘贴到原始文件中。
您应该将类B放在与类A相同的文件中以解决此问题。或者你可以把class B放在c.py中,并用“from c import B”导入它。
矿石使用该类的完整导入名称:a = a.A() – reto 2009-05-25 10:14:14