gpt4 book ai didi

python - 为什么这个对象未分配?

转载 作者:行者123 更新时间:2023-11-28 22:42:38 24 4
gpt4 key购买 nike

Trie 是一个节点列表:

class node:
def __init__(self, parent, daughters, edge):
self.parent = parent
self.daughters = daughters
self.edge = edge
trie.append(self)
self.index = len(trie) - 1

def TrieConstruction(patterns):
global trie
for node in trie:
print('Node: ', node.parent, node.daughters, node.edge, node.index)
trie.append(node(0, [], 0))
...

程序报错:

File "trieMatching.1.py", line 22, in TrieConstruction
trie.append(node(0, [], 0))
UnboundLocalError: local variable 'node' referenced before assignment

我不知道为什么这个变量会被取消赋值;该函数不理解“节点”是一个类并且我正在实例化它吗?

最佳答案

您正在为类和 for 循环目标使用名称 node:

class node:
# ...

for node in trie:
# ...
trie.append(node(0, [], 0))

如果 trie 为空,node 将在函数中保持未绑定(bind)状态,因为没有值可以分配给它。

您必须重命名其中一个。我建议你关注Python style guide并使用 CamelCase 作为类名:

class Node:

和 lower_case_with_underscores 用于您的函数(以及更能反射(reflect)职责的名称):

def construct_trie(patterns):

关于python - 为什么这个对象未分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31504533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com