Sobes.tech
Назад к вопросам
Junior — Middle
60

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

Компании, где спрашивали
РунитиРунити
СБЕР РоботыСБЕР Роботы

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

sobes.tech AI

В Python механизм контекстного менеджера реализуется с помощью методов __enter__ и __exit__ в классе. Контекстный менеджер позволяет автоматически управлять ресурсами, например, открывать и закрывать файлы, устанавливать и снимать блокировки.

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

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 cm:
    print("В теле with")
    # Можно вызвать исключение, чтобы проверить __exit__
    # raise ValueError("Ошибка")

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