尴尬的python类行为?

soc*_*cks 1 python

我有以下简单的代码:

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)

在每个节点上打印值时,它们都是相同的.似乎我构建的每个"新节点"都只是覆盖了所有以前的节点的值.为什么这些没有完全单独设置,我该如何解决?

Gre*_*ill 5

我想你想调用Node构造函数:

    n = Node()
Run Code Online (Sandbox Code Playgroud)

否则,赋值n.value与分配相同Node.value,后者设置的属性,而不是您想要创建的对象.通过返回Node类对象本身,您的nodes列表包含对同一Node类对象的一堆引用.