Вопрос проверяет понимание протокола контекстного менеджера и механизма with.
Короткий ответ
Чтобы объект работал в with, нужно реализовать методы __enter__ и __exit__. Метод __enter__ выполняется при входе в блок и возвращает объект, который будет доступен внутри with. Метод __exit__ вызывается при выходе, даже если произошло исключение. Обычно он используется для освобождения ресурсов.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.