Добрый день. Помогите с решением задачи
Задача 2. Пример
На одном собеседовании вам дали такой основной код:
my_obj = Example()
with my_obj as obj:
print('Код внутри первого вызова контекст менеджера')
with my_obj as obj2:
raise Exception('Выброс исключения во вложенном (втором) вызове контекст менеджере')
print('Я обязательно выведусь...')
Также вместе с этим кодом выдали результат его выполнения:
Вызов __init__
Вызов __enter__
Код внутри первого вызова контекст менеджера
Вызов __enter__
Вызов __exit__
Тип ошибки:
Значение ошибки: Выброс исключения во вложенном (втором) вызове контекст-менеджера
"След" ошибки:
Вызов __exit__
Тип ошибки:
Значение ошибки: Выброс исключения во вложенном (втором) вызове контекст-менеджера
"След" ошибки:
. . . . (тут сама ошибка красным цветом) . . . .
Исходя их этих входных данных, реализуйте класс «Контекст-менеджер», который будет выдавать такой же результат.
После этого поправьте класс так, чтобы сработала последняя строчка основного кода. Сам основной код редактировать нельзя.
Результат с последней строчкой:
Вызов __init__
Вызов __enter__
Код внутри первого вызова контекст-менеджера
Вызов __enter__
Вызов __exit__
Тип ошибки:
Значение ошибки: Выброс исключения во вложенном (втором) вызове контекст-менеджера
"След" ошибки:
Я обязательно выведусь...
Вызов __exit__
Вот мой код:
class Example:
def __init__(self):
print('Вызов __init__')
def __enter__(self) -> 'Example':
print('Вызов __enter__')
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print('Вызов __exit__')
if Exception:
print('Тип ошибки: ', exc_type)
print('Значение ошибки: ', exc_val)
print('"След" ошибки: ', exc_tb)
else:
return True
my_obj = Example()
with my_obj as obj:
print('Код внутри первого вызова контекст менеджера')
with my_obj as obj2:
raise Exception('Выброс исключения во вложенном (втором) вызове контекст менеджере')
print('Я обязательно выведусь...')
Не могу выполнить последнюю строчку!