Back to questions
Junior — Middle
67
Можешь перечислить и объяснить магические методы, используемые в асинхронных контекстных менеджерах?
Answer from AI
sobes.tech AI
В Python асинхронные контекстные менеджеры используют два магических метода:
__aenter__(self)— вызывается при входе в асинхронный контекст (async with). Должен возвращать awaitable объект, обычно сам менеджер или ресурс.__aexit__(self, exc_type, exc, tb)— вызывается при выходе из контекста, также возвращает awaitable. Позволяет обработать исключения внутри контекста.
Пример простого асинхронного контекстного менеджера:
class AsyncManager:
async def __aenter__(self):
print('Вход в контекст')
return self
async def __aexit__(self, exc_type, exc, tb):
print('Выход из контекста')
if exc:
print(f'Обработка исключения: {exc}')
import asyncio
async def main():
async with AsyncManager() as manager:
print('В теле контекста')
asyncio.run(main())
Таким образом, эти методы позволяют управлять ресурсами в асинхронном коде, обеспечивая корректное открытие и закрытие.