Назад к вопросамПример реализации через декоратор
Middle
4
Что такое контекстный менеджер, какие задачи он решает и как написать свой через класс и через декоратор?
Компании, где спрашивали
fabriqeue
Ответ от нейросети
sobes.tech AI
Контекстный менеджер в Python — это объект, который управляет ресурсами, обеспечивая их корректное открытие и закрытие. Он используется с конструкцией with, что гарантирует выполнение кода очистки даже при возникновении исключений.
Задачи контекстного менеджера:
- Автоматическое освобождение ресурсов (файлы, соединения, блокировки)
- Обеспечение чистоты кода и предотвращение утечек ресурсов
Пример реализации через класс:
class MyContextManager:
def __enter__(self):
print("Ресурс открыт")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("Ресурс закрыт")
# Можно обработать исключения, если нужно
with MyContextManager() as cm:
print("Работа с ресурсом")
Пример реализации через декоратор contextlib.contextmanager:
from contextlib import contextmanager
@contextmanager
def my_context():
print("Ресурс открыт")
try:
yield
finally:
print("Ресурс закрыт")
with my_context():
print("Работа с ресурсом")
Оба варианта позволяют удобно управлять ресурсами и обеспечивают выполнение кода очистки.