Менеджер контекста в ООП в Python
Конструкция with временно входит
в контекст и затем выходит из него.
Для этого в классе задают специальные
методы __enter__ и __exit__.
Метод __enter__ вызывается
в начале блока with. Метод
__exit__ вызывается в конце,
даже если внутри блока была ошибка.
Давайте сделаем простой класс, который при входе пишет одно сообщение, а при выходе - другое:
class Logger:
def __enter__(self):
print('start')
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print('end')
return False
Воспользуемся конструкцией with:
with Logger():
print('work')
Сделайте класс Timer. В методе
__enter__ выводите текст
'timer on', в методе
__exit__ - 'timer off'.