Sobes.tech
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())

Таким образом, эти методы позволяют управлять ресурсами в асинхронном коде, обеспечивая корректное открытие и закрытие.