Какие магические методы работают в контекстном менеджере
Python
Middle
Без компании
Какие магические методы работают в контекстном менеджере
Ответы
В контекстных менеджерах Python работают два основных магических метода:
- `__enter__(self)` - вызывается при входе в блок `with`. Возвращаемое значение будет доступно через `as`.
- `__exit__(self, exc_type, exc_val, exc_tb)` - вызывается при выходе из блока `with`. Обрабатывает исключения, если они возникли.
Пример реализации:
```
class MyContextManager:
def __enter__(self):
print("Entering context")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("Exiting context")
if exc_type:
print(f"Exception occurred: {exc_val}")
return True # Подавляем исключение
with MyContextManager() as cm:
print("Inside context")
# raise ValueError("Oops!") # Исключение будет обработано
```