Что такое weakref и когда он полезен?
Модуль weakref в стандартной библиотеке Python предоставляет разработчикам механизм создания так называемых слабых ссылок на объекты, которые не увеличивают счетчик ссылок и не препятствуют удалению целевого объекта сборщиком мусора.
Это означает, что если на определенный объект больше не ссылаются обычные сильные переменные, Python имеет полное право уничтожить его из памяти, даже если на него все еще указывают слабые ссылки из модуля weakref.
Данный инструмент оказывается чрезвычайно полезным в нескольких типичных сценариях разработки.
Однако применять weakref следует с осторожностью, поскольку в момент обращения к слабой ссылке объект уже может быть удален сборщиком мусора, что вернет значение None и потребует от разработчика обязательной проверки на этот случай в коде.