我有以下简单的代码:
class Node:
pass
def make_node(value):
n = Node
n.value = value
return n
if __name__ == '__main__':
list = range(100)
random.shuffle(list)
nodes = []
for i in range(len(list)):
nodes.append(make_node(list[i]))
for n in nodes:
print n.value
在每个节点上打印值时,它们都是相同的。似乎我构建的每个“新节点”都只是覆盖了所有以前的节点的值。为什么这些没有完全单独设置,我该如何解决?
答案 0 :(得分:5)
我想你想调用Node
构造函数:
n = Node()
否则,n.value
的分配与分配给Node.value
的分配相同,Node
设置类的属性,而不是对象你想创造。通过返回nodes
类对象本身,您的Node
列表包含对同一{{1}}类对象的一堆引用。