objectif
Associer des valeurs à des objets sans empêcher leur GC (clés faibles).
code minimal
import weakref, gc
class Obj: pass
cache = weakref.WeakKeyDictionary()
o = Obj(); cache[o] = 42
refcount_before = len(cache)
del o; gc.collect()
print(len(cache) <= refcount_before) # attendu: True (clé retirée après GC)
utilisation
import weakref
class Node: pass
w = weakref.WeakKeyDictionary()
n = Node(); w[n] = "meta"
print(w[n] == "meta")
variante(s) utile(s)
import weakref
print(hasattr(weakref, "WeakKeyDictionary"))
notes
- Idéal pour attacher des métadonnées temporaires à des objets sans fuite mémoire.
- Les entrées disparaissent automatiquement lorsque la clé n’est plus référencée.