Начнем с того, что в контекстном менеджере должны быть определены методы
__enter__ и __exit__. Давайте создадим наш собственный менеджер контекста для открытия файлов и поймем суть его работы.class NewOpen(object): def __init__(self, file_name, mode): self.file = open(file_name, mode) def __enter__(self): return self.file def __exit__(self, type, value, traceback): self.file.close()Просто определив методы
__enter__ и __exit__, мы можем использовать наш новый класс с оператором with. Давайте попробуем:with NewOpen('test.txt', 'w') as file: file.write('Hello, world!')Наш метод
__exit__ принимает три аргумента. Они требуются для каждого метода __exit__, который является частью класса.# test