Python 为什么不允许这种进口?

Python 为什么不允许这种进口?,python,Python,档案: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没有定义。我是不是误解了“进口” 如果你能指出这个问题的话,非常感谢 因为python在自己的文件中初始化

档案: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没有定义。我是不是误解了“进口”


如果你能指出这个问题的话,非常感谢

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


您应该将类B与类A放在同一个文件中以解决此问题。或者,您可以将类B放在c.py中,并使用“从c导入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类称为“a.a”

  • 如果要使用b,则需要在a.py中导入b


您希望通过将所有内容放在同一个模块中,或将内容拆分为多个模块来避免两个模块需要相互包含。另外,最好将所有导入都放在文件的开头,这样就不可能进行这种蒙混过关。

或者使用类的完整导入名称:a=a.a()