[英]Why can't a class's static variable be an instance of the class?
因此,当我意识到我需要一个 class 的特定实例可供所有其他实例使用时,我正在敲出一段有趣的代码。
我决定将其设为 class 的 static 成员,而不是创建一个全局变量(本质上是坏的)。 这是一个例子:
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
在使用前需要定义。
您可以像这样“修复”它:
class Node:
nod = None
def __init__(self):
Node.nod = Node.nod or self
n = Node() # you need this before accessing Node.nod
print(n)
print(Node.nod)
但对我来说是“气味”——为什么需要 Node 的“实例”——而不是使用 Node 来保存要使用的属性。
Output:
<__main__.Node object at 0x7ff22cd0c278>
<__main__.Node object at 0x7ff22cd0c278>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.