Uma referência comum mantém o objeto vivo. weakref permite observá-lo sem impedir a coleta de memória quando não restam referências fortes. Isso ajuda em caches, registries e associações 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

Como usar com segurança

Nem todo tipo aceita referência fraca. O desaparecimento de uma entrada pode ocorrer entre duas operações, portanto obtenha o valor uma vez e teste o resultado. Não use weakref como substituto de uma política explícita de cache com limite e expiração.

Para aprofundar a base, consulte guia de collections em Python e guia de type hints.

A documentação oficial do Python, consultada em 22 de julho de 2026, descreve a API, os casos-limite e a compatibilidade entre versões.