【发布时间】:2022-01-25 22:06:18
【问题描述】:
此代码在 python 命令行中工作。但是,在模块中编译它时会出现以下错误:“未定义名称'A'。”
>>> class A:
... a = 2
... c = A.a
...
>>> A.c
2
class A:
a = 2
c = A.a
NameError: name 'A' is not defined
我找到了更好的解决方案。如下所示,一个静态变量可用于另一个静态变量的初始化。下面的代码编译得很好。
class A:
a = 2
b = a
c = A()
print(c.b)
【问题讨论】:
-
名称
A直到class块完成后才定义。所以在定义类时不能引用它。 -
我怀疑在您的交互式会话中您之前定义了
A类。所以你使用的是A.a的旧值。 -
好的,有道理。但是,为什么它可以在命令行中工作?
-
@Barmar 谢谢。你是对的。我重置了我的命令行,然后它产生了同样的错误。