Создать контекстный менеджер можно двумя основными способами:
__enter__ и __exit__.contextmanager из модуля contextlib.Пример с классом:
python
Пример с декоратором contextmanager:
python
Выбор между этими способами зависит от сложности логики и предпочтений. Классовый подход более явный и подходит для сложной логики с управлением ресурсами. Декоратор contextmanager удобен для более простых случаев и когда логика может быть выражена в виде генератора.