Sobes.tech
Назад к вопросам
Middle
2

Как реализовать контекстный менеджер самостоятельно? Какие методы нужно реализовать?

Компании, где спрашивали
Лига Цифровой ЭкономикиЛига Цифровой Экономики

Ответ от нейросети

sobes.tech AI

В Python контекстный менеджер — это объект, который реализует методы __enter__ и __exit__. Чтобы создать собственный контекстный менеджер, нужно определить класс с этими методами.

  • __enter__(self) вызывается при входе в блок with. Обычно он возвращает ресурс или сам объект.
  • __exit__(self, exc_type, exc_val, exc_tb) вызывается при выходе из блока with. В этот метод передаются информация об исключении, если оно возникло, или None.

Пример реализации простого контекстного менеджера:

class MyContextManager:
    def __enter__(self):
        print("Вход в контекст")
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("Выход из контекста")
        if exc_type:
            print(f"Обработано исключение: {exc_type}")
        return False  # не подавлять исключения

with MyContextManager() as cm:
    print("Внутри блока with")
    # можно вызвать ошибку, чтобы проверить __exit__
    # raise ValueError("Ошибка")

Таким образом, для создания контекстного менеджера нужно реализовать методы __enter__ и __exit__.