Una referencia normal mantiene vivo el objeto. weakref permite observarlo sin impedir su recolección cuando desaparecen las referencias fuertes. Resulta útil en cachés, registros y asociaciones auxiliares.
from weakref import WeakValueDictionary
class Image:
def __init__(self, path: str) -> None:
self.path = path
cache: WeakValueDictionary[str, Image] = WeakValueDictionary()
image = Image("cover.png")
cache[image.path] = image
assert cache["cover.png"] is image
Cómo usarlo con seguridad
No todos los tipos admiten referencias débiles. Una entrada puede desaparecer entre operaciones, así que obtén el valor una vez y comprueba el resultado. No uses weakref como sustituto de una política explícita de caché con límites y expiración.
Para reforzar la base, consulta guía de collections en Python y guía de type hints.
La documentación oficial de Python, consultada el 22 de julio de 2026, describe la API, los casos límite y la compatibilidad entre versiones.