Back to questions
Junior — Middle
69
Каким образом можно реализовать собственный менеджер контекста в классе Python?
Answer from AI
sobes.tech AI
Для реализации собственного менеджера контекста в Python нужно определить класс с методами __enter__ и __exit__.
__enter__(self)вызывается при входе в блокwithи может возвращать объект, который будет доступен внутри блока.__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_val}")
return True # подавляет исключение
with MyContextManager() as manager:
print("Внутри блока with")
# Можно вызвать ошибку для проверки
# raise ValueError("Ошибка")
Такой менеджер позволяет управлять ресурсами, например, открывать и закрывать файлы, устанавливать и снимать блокировки и т.п.