将对象设置为 None 不会更新所有引用

所以我有这段代码......


...

print(F"node id {id(node)}")

print(F"left child id {id(prevNode.get_left_child())}")

node = None

print(F"node id {id(node)}")

print(F"left child id {id(prevNode.get_left_child())}

...

这给了我以下输出:


node id 4860975032

left child id 4860975032

node id 4383750560

left child id 4860975032

我本来期望:


node id 4860975032

left child id 4860975032

node id 4383750560

left child id 4383750560

prevNode.get_left_child()指向该node对象,但是当我将 node对象设置为None它时,不会更新prevNode.get_left_child()引用。为什么是这样?


ABOUTYOU
浏览 135回答 2
2回答

喵喵时光机

在Python中,将变量设置为None仅意味着该变量不再指向它之前指向的位置,指向同一对象的其他变量名称以及该对象本身保持不变。

牛魔王的故事

您刚刚更改了变量指向的位置。您还没有接触过这些物体。前:None (4383750560)objectA <-- prevNode+-> left_child = objectB (4860975032) <-- node后:None (4383750560) <-- nodeobjectA <-- prevNode+-> left_child = objectB (4860975032)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python