文件:b.py
class B:
def __init__(self):
print "B"
import a
a = A()
文件:a.py
class A(B): ###=> B is not defined
def __init__(self):
print "A"
当我尝试执行b.py
时,表示B未定义。我误解了“进口”吗?
如果你可以指出问题,那么非常感谢。
答案 0 :(得分:5)
因为python在自己的文件中初始化了A类。它不像C或PHP包含,其中每个导入的模块基本上都粘贴到原始文件中。
您应该将B类放在与A类相同的文件中以解决此问题。或者你可以把B类放在c.py中并用“from c import B”导入它。
答案 1 :(得分: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类称为“a.A”。
如果您想使用b,则需要在a.py中导入。
您希望避免让两个模块需要相互包含,方法是将所有内容放在同一个模块中,或者将内容拆分到更多模块中。此外,最好将所有导入放在文件的头部,这样就不可能进行这种编辑。