Код Middle Исключения и контекстные менеджеры обновлено

Свой suppress

Условие

Реализуйте класс-контекстный менеджер Suppress(*exc_types), который подавляет указанные исключения (и их подклассы) и запоминает подавленное в атрибуте error (иначе None). Проверка run(kind, types) бросает исключение по имени kind ("KeyError", "ValueError", "LookupError" или None = без ошибки) внутри with Suppress(...) и возвращает ["suppressed", имя], ["ok", None] или ["raised", имя].

Примеры

run("KeyError", ["KeyError"]) // ["suppressed", "KeyError"]
run("ValueError", ["KeyError"]) // ["raised", "ValueError"]
run(null, ["KeyError"]) // ["ok", null]

Как подойти

Подсказки: 2
  1. issubclass принимает кортеж типов.
  2. При нормальном выходе exc_type равен None.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.