Back to questions
Aston
VK
Junior — Middle
62
Какие методы реализации контекстных менеджеров в Python ты знаешь?
Companies where asked
Answer from AI
sobes.tech AI
В Python есть два основных способа реализации контекстных менеджеров:
-
Через методы
__enter__и__exit__в классеНужно определить класс с методами:
__enter__(self)— вызывается при входе в блокwith, возвращает объект, который будет присвоен переменной послеas.__exit__(self, exc_type, exc_val, exc_tb)— вызывается при выходе из блока, здесь можно обработать исключения и освободить ресурсы.
Пример:
class MyContext: def __enter__(self): print('Вход') return self def __exit__(self, exc_type, exc_val, exc_tb): print('Выход') with MyContext() as ctx: print('В теле блока') -
С помощью декоратора
@contextmanagerиз модуляcontextlibПозволяет написать генератор, где до
yield— код входа, послеyield— код выхода.Пример:
from contextlib import contextmanager @contextmanager def my_context(): print('Вход') yield print('Выход') with my_context(): print('В теле блока')
Оба способа широко используются в Python для управления ресурсами, например, для работы с файлами, блокировками, сетевыми соединениями и т.д.