Bizarre reference behavior in Tree implementation
本问题已经有最佳答案,请猛点这里访问。
在一个更大的系统中,我完全被一个错误所困扰。考虑这个类(每个节点维护一个指向其父节点的指针和子节点的列表):
1 2 3 4 5 6 7 8 9 10 11 12 | class Node: children = [] def __init__(self, parent): self.contents = dict() self.parent = parent if parent is not None: print self.children print parent == self parent.children.append(self) print self.children |
运行此:
1 2 | foo1 = Node(None) foo2 = Node(foo1) |
神秘地返回:
1 2 3 | [] False [<__main__.Node instance at 0x10051f128>] |
这有什么意义吗?为什么第二个节点的子节点不为空?也许我对一个与Python如何传递引用相关的概念缺乏基本的理解。
您已经将