Sobes.tech
Back to questions
Junior — Middle
69

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

Answer from AI

sobes.tech AI

Для реализации собственного менеджера контекста в Python нужно определить класс с методами __enter__ и __exit__.

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

Пример:

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

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

with MyContextManager() as manager:
    print("Внутри блока with")
    # Можно вызвать ошибку для проверки
    # raise ValueError("Ошибка")

Такой менеджер позволяет управлять ресурсами, например, открывать и закрывать файлы, устанавливать и снимать блокировки и т.п.