我有一个代表节点的Node
类,我希望有一个字典映射节点到节点集。
{Node: set(Node)}
现在,只要节点被“删除”,就需要更新这样的字典。不仅需要从字典的“键”中删除节点,还需要从它所属的任何“值集”中删除它。
weakref
提供了一种实现此逻辑的方法,而无需任何额外的努力;该集合变为WeakSet
,dict
变为WeakKeyDictionary
,现在会自动发生“更新”。
但是,关于weakref
的大多数讨论都建议它应该用于防止参考周期和实现缓存等。使用弱引用来实现上面的核心逻辑是一个好主意吗?具体来说,依靠垃圾收集器来做通常手动实现的事情是否有任何危险。