我一直在尝试理解Python弱引用列表/字典的工作原理。我已经阅读了相关文档,但是我仍然无法理解它们的工作原理以及可以用它们做什么。有人可以给我一个基本示例来说明它们的作用,并解释一下它们的工作原理吗?
(编辑)使用Thomas的代码,当我将obj替换为
(编辑)使用Thomas的代码,当我将obj替换为
[1,2,3]
时,它会抛出异常:Traceback (most recent call last):
File "C:/Users/nonya/Desktop/test.py", line 9, in <module>
r = weakref.ref(obj)
TypeError: cannot create weak reference to 'list' object
weakref
文档建议通过子类化来创建一个弱引用到列表:class WeakRefableList(list):pass
。然而,我不确定这是否能帮助您实现想要做的事情,适当的作用域应该足以让垃圾回收处理您的问题。如果您想要跟踪内存泄漏,您可以随时使用gc
模块。 - Thomas Orozco