все Python 3ООПфункция
__exit__
контекст. менеджер
Метод выхода из блока with: вызывается всегда, даже при исключении, и получает его тип, значение и трассировку.
Синтаксис
def __exit__(self, exc_type, exc_value, traceback): ...
При обычном выходе все три аргумента — None. Вернув истинное значение, __exit__ подавляет исключение, и выполнение продолжится после with; по умолчанию возвращают None или False, иначе ошибки исчезают молча. Именно __exit__ гарантирует закрытие файла и освобождение блокировки.
Примеры
class Guard:
def __enter__(self):
return self
def __exit__(self, exc_type, exc, tb):
print('exit:', exc_type.__name__ if exc_type else None)
return exc_type is ZeroDivisionError # подавить только деление на ноль
with Guard():
pass # → exit: None
with Guard():
1 / 0 # → exit: ZeroDivisionError
print('продолжаем') # → продолжаем — исключение подавлено
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности