Какие знаешь способы для реализации контекстного менеджера в Python

Python Senior VK
Какие знаешь способы для реализации контекстного менеджера в Python
Ответы
В Python контекстные менеджеры можно реализовать двумя основными способами: - **Через класс с методами `__enter__` и `__exit__`**: ``` class FileManager: def __init__(self, filename, mode): self.filename = filename self.mode = mode def __enter__(self): self.file = open(self.filename, self.mode) return self.file def __exit__(self, exc_type, exc_val, exc_tb): self.file.close() with FileManager('test.txt', 'w') as f: f.write('Hello') ``` - **Используя `contextlib.contextmanager`** (декоратор для генератора): ``` from contextlib import contextmanager @contextmanager def file_manager(filename, mode): file = open(filename, mode) try: yield file finally: file.close() with file_manager('test.txt', 'w') as f: f.write('Hello') ``` Оба способа гарантируют корректное освобождение ресурсов. Первый более гибкий (можно обрабатывать исключения в `__exit__`), второй - лаконичнее.