奇怪的行为与python中的简单树实现

oad*_*ams 0 python tree class

class Node:
    children = {}

sequence = [1,2,3,4,5]

tree = Node()
node = tree
for item in sequence:
    if item not in node.children:
        node.children[item] = Node()
    node = node.children[item]

print tree.children.keys()
Run Code Online (Sandbox Code Playgroud)

我希望上面的代码输出[1],但它输出[1, 2, 3, 4, 5].这是为什么,我将如何解决它?

Ign*_*ams 7

Node.children是一个类属性.改为使其成为实例属性.

class Node:
  def __init__(self):
    self.children = {}
Run Code Online (Sandbox Code Playgroud)