Sobes.tech
Back to questions
Junior — Middle
54

Какие специальные методы требуется реализовать при создании собственного контекстного менеджера в Python?

Answer from AI

sobes.tech AI

Для создания собственного контекстного менеджера в Python необходимо реализовать два специальных метода:

  • __enter__(self): вызывается при входе в блок with. Обычно здесь происходит подготовка ресурсов. Метод должен возвращать объект, который будет привязан к переменной после as.

  • __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_type}")

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