Работали ли с контекстными менеджерами? Если у меня есть мой класс и я хочу, чтобы он был контекстным менеджером, что я должен сделать?

Для обычного контекстного менеджера реализуйте __enter__ и __exit__. Первый подготавливает и возвращает ресурс, второй освобождает его и получает сведения об исключении.

Короткий ответ

Что ответить на собеседовании

Для обычного контекстного менеджера реализуйте enter и exit. Первый подготавливает и возвращает ресурс, второй освобождает его и получает сведения об исключении.

Подробный разбор

Ответ с пояснениями

Для обычного контекстного менеджера реализуйте enter и exit. Первый подготавливает и возвращает ресурс, второй освобождает его и получает сведения об исключении.

Возврат True из exit подавляет исключение; обычно возвращают False или None, чтобы не скрывать сбой. Метод выхода вызывается после успешного входа, поэтому частичную ошибку самого enter нужно уметь очистить там же. Альтернатива — contextlib.contextmanager с try/finally. Для async with используются aenter и aexit, поддерживающие асинхронное ожидание.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее