尴尬的python类行为?

时间:2010-12-26 03:02:35

标签: 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

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

1 个答案:

答案 0 :(得分:5)

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

    n = Node()

否则,n.value的分配与分配给Node.value的分配相同,Node设置的属性,而不是对象你想创造。通过返回nodes类对象本身,您的Node列表包含对同一{{1}}类对象的一堆引用。