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

Вы создавали свои собственные реализации контекстных менеджеров в 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")
    # raise ValueError("Ошибка")  # если раскомментировать, исключение будет обработано

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