Проверяет знание протокола контекстного менеджера в Python.
Нужно реализовать методы __enter__ и __exit__ в классе. __enter__ вызывается при входе в блок with, может вернуть ресурс; __exit__ вызывается при выходе, получает информацию об исключениях и закрывает или очищает ресурс.
__enter__(self):
Инициализирует ресурс, возвращает его (или self).
__exit__(self, exc_type, exc_val, exc_tb):
Вызывается всегда: после выполнения блока или при исключении.
Параметры: тип, значение и трассировка исключения или None.
Для подавления исключения вернуть True.
Пример:
class MyCM:
def __enter__(self):
print("Вход")
return self
def __exit__(self, t, v, tb):
print("Выход")
with MyCM() as cm:
print("Работа")Использование:
Управление файлами, сетевыми соединениями, транзакциями.