Python Glossary English

все 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Сообщить о неточности