Встречается на собеседованиях • сегодня

Использовались ли weakref на проектах

Да, weakref использовался в проектах, особенно там, где нужно избегать циклических ссылок, которые мешают сборщику мусора.

Пример:

python
import weakref

class Node:
    def __init__(self, value):
        self.value = value
        self._parent = None
text
@property
def parent(self):
    return self._parent() if self._parent else None

@parent.setter
def parent(self, node):
    self._parent = weakref.ref(node)  # Слабая ссылка

a = Node(1)
b = Node(2)
a.parent = b # Нет циклической зависимости

text

**Где применяется:**  
- Кэширование без удержания объектов в памяти.  
- Объекты с сложными взаимосвязями (например, деревья или графы).  
- Коллбэки, чтобы избежать утечек памяти.  

**Нюансы:**  
- Нужно проверять, что объект ещё существует (`ref()` возвращает `None`, если объект удалён).  
- Не работает со списками, словарями (нужен `WeakKeyDictionary`, `WeakValueDictionary`).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы