Tob*_*ert 3 python instance del python-3.x
我有以下代码:
class Node:
def __init__(self, item):
self.item = item
node1 = Node(12)
cur = node1
Run Code Online (Sandbox Code Playgroud)
是否可以node1使用删除cur?
我试过了,del cur但它没有给出想要的结果,cur现在不再存在,但node1仍然存在。
任何帮助表示赞赏。
让我们澄清一个误解:在 Python 中没有“分配”对象。
变量只是对内存中恰好包含值的位置的引用。
通过这样做,del cur您只是确保cur不引用node1也引用的内存位置,但不会发生任何事情node1。
看看这个可视化。请注意node1's 和cur's 箭头如何指向同一Node对象在内存中的位置。如果您单击“转发”,您将看到del cur执行时唯一发生的事情是cur的箭头将被删除(cur即将不再引用内存中node1引用的相同位置)。
没有做同样的node1事情就没有办法做同样的事情del node1,即使那样,垃圾收集器也可以决定何时删除Node对象本身(这实际上会释放它所占用的内存)。这取决于 Python 解释器的具体实现,但这通常是通过引用计数来完成的。
有关有用信息,请参阅以下 2 个站外资源:
Python 的垃圾收集器和关于 Python 名称和值的事实和神话
| 归档时间: |
|
| 查看次数: |
556 次 |
| 最近记录: |