【发布时间】:2020-09-29 03:26:52
【问题描述】:
所以当我意识到我需要一个类的特定实例以供所有其他实例使用时,我正在敲出一段代码来搞笑。
我决定将其设为类的静态成员,而不是创建一个全局变量(本质上是不好的)。这是一个例子:
class Node:
nod = Node()
def __init__(self):
pass
n = Node()
print(n)
print(Node.nod)
这不会运行!我明白了:
NameError: name 'Node' is not defined
什么?为什么我不能?我可以这样做:
class Node:
def __init__(self):
self.nod = Node()
n = Node()
print(n)
print(Node.nod)
虽然我没有包含导致代码递归到 RecursionError 的停止条件,但代码仍然可以识别 Node() 构造函数的样子。
有人想插话这种奇怪的行为吗?
【问题讨论】:
-
Node()在您定义Node()之前不会被定义。您正在尝试在定义它的地方使用它。 -
只需将初始化移出类声明并使用此全局变量。
标签: python class constructor static