首页 > 解决方案 > 使用 Python 文件作为命名空间

问题描述

我遇到了一个看似微不足道的问题。

如果我们在 python 文件中定义这样的结构:

class A:
   pass

class B:
   a = A()

我们不能反过来定义它:

class B:
   a = A  # <-- the error is here

class A:
   pass

编译器说a = A是一个未解析的引用,但我们这样做,java例如,没关系,它会编译。

这没什么大不了的,但是我想知道这背后的实际逻辑。这看起来好像不是一个复杂的结构,而是一个脚本,它一个一个地初始化类而不是分析它。

是否可以将python文件转换为命名空间,类似于类中的函数,无论它们的定义顺序如何,它们都知道它们的存在?

标签: pythonclassnamespacesfunction-definition

解决方案


推荐阅读