Нужно реализовать 2 метода __enter__ и __exit__
__enter__() — устанавливает контекст и, по желанию, возвращать некоторый объект.__exit__() — очищает объект.class MyContextManager:
def __enter__(self):
print("Entering context")
def __exit__(self, exc_type, exc_val, exc_tb):
print("Exiting context")
with MyContextManager():
print("Inside context")
with сохраняет метод __exit__ класса File.__enter__ класса File.__enter__ открывает файл и возвращает его.opened_file..write().with вызывает сохраненный __exit__ метод.__exit__ закрывает файл.