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

Какой протокол у контекстного менеджера

Контекстный менеджер в Python реализует протокол с двумя методами: __enter__() и __exit__().

  • __enter__() вызывается при входе в блок with, возвращает объект для работы внутри контекста
  • __exit__() вызывается при выходе, обрабатывает исключения и освобождает ресурсы

Пример реализации:

python
class MyContextManager:
    def __enter__(self):
        print("Вход в контекст")
        return self
    
    def __exit__(self, exc_type, exc_val, exc_tb):
        print("Выход из контекста")
        if exc_type is not None:
            print(f"Ошибка: {exc_val}")
        return True  # Подавляем исключение

with MyContextManager() as cm:
    print("Внутри контекста")

Ключевые особенности:

  1. __exit__() получает информацию об исключении (если оно возникло)
  2. Возврат True из __exit__() подавляет исключение
  3. Можно использовать @contextmanager из модуля contextlib для упрощения
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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