В Python можно использовать
__enter__ и __exit__, чтобы превратить объект в контекстный менеджер — даже для вещей, которые обычно так не используют. Например: автоматически замерять время выполнения блока кода:
import time
class Timer:
def __enter__(self):
self.start = time.time()
return self
def __exit__(self, *args):
print(f"⏱ Время выполнения: {time.time() - self.start:.4f} c")
with Timer():
sum([i**2 for i in range(10_000_000)])
👉 Теперь любой код внутри with Timer(): автоматически измеряется.
Этот приём удобно применять для логирования, отката транзакций или даже временной подмены настроек.