Назад к вопросам
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 для упрощённого создания контекстных менеджеров.