我有以下简单的代码:
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
Run Code Online (Sandbox Code Playgroud)
在每个节点上打印值时,它们都是相同的.似乎我构建的每个"新节点"都只是覆盖了所有以前的节点的值.为什么这些没有完全单独设置,我该如何解决?
我想你想调用Node
构造函数:
n = Node()
Run Code Online (Sandbox Code Playgroud)
否则,赋值n.value
与分配相同Node.value
,后者设置类的属性,而不是您想要创建的对象.通过返回Node
类对象本身,您的nodes
列表包含对同一Node
类对象的一堆引用.