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

Какие методы нужно определить, чтобы написать свой контекстный менеджер

В Python для создания контекстного менеджера нужно реализовать два метода в классе: __enter__ и __exit__.

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

Пример:

python
class MyContextManager:
    def __enter__(self):
        print("Entering context")
        return self  # или другой объект

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("Exiting context")
        if exc_type:  # обработать исключение, если нужно
            print(f"Exception: {exc_val}")
        return True  # подавляет исключение, если вернуть True

# Использование
with MyContextManager() as cm:
    print("Inside context")

Также можно использовать contextlib.contextmanager с генератором для более простых случаев.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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