为什么节点对象值会发生变化?

时间:2017-11-24 01:09:28

标签: python queue nodes

下面是我的python代码。

u.level设置为v.level + 1后,不仅u.level,还v.level,还会增加1.此外,当我执行u.level -= 1时,{ {1}}减少1.为什么会出现这种情况?这种情况也发生在Java中。我该怎么做才能解决这个问题?

v.level

1 个答案:

答案 0 :(得分:0)

对于大多数代码,您实际上并没有两个节点。相反,名称uv都绑定到同一个Node实例,该实例最初为u。当您从队列中弹出对v节点的引用时,名称被反弹后,原始u节点被垃圾收集:

Q.put(u)      # add a reference to u to the queue
v = Q.get()   # immediately take it off again, rebinding v to be the same as u

老实说,我不知道你对这些行的期望是什么。它们的效果与v = u相同,我认为这不是你想要的。