Нужно реализовать 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__
закрывает файл.