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