Менеджеры контекста

Создание своего менеджера контекста

Содержание курса

0 / 1 баллов

Временная подмена атрибута

Реализуйте класс-контекстный менеджер temporary_attribute(obj, name, value). При входе он временно устанавливает obj.<name> = value и возвращает obj. При выходе восстановите прежнее значение; если атрибута до входа не существовало, удалите его. Восстановление обязательно и после исключения.

Пример

config = type("Config", (), {"mode": "prod"})()

with temporary_attribute(config, "mode", "test") as current:
    current.mode  # "test"

config.mode      # "prod"

Менеджер не подавляет исключения из блока.

О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

РешениеPython · Python 3.12 (basic)
Как проверяется решение

Проверяются функции и их результаты. Собственный запуск выполняет ваш код без авторских тестов. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.

Отправьте решение, чтобы увидеть результаты тестов.

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.