Python Glossary English

Python 3.7+contextlibпонятие

contextlib.AbstractAsyncContextManager

протоколы

Абстрактный базовый класс асинхронного контекстного менеджера (протокол __aenter__/__aexit__, для async with).

Синтаксис

class C(contextlib.AbstractAsyncContextManager): ...

Наследоваться не обязательно: проверка подкласса идёт по наличию __aenter__ и __aexit__, так что любой подходящий класс уже считается подклассом — сам ABC нужен в основном как готовый базовый класс (даёт __aenter__, возвращающий self) и как аннотация типа. Проверка смотрит только на имена методов, а не на то, что они корутины, и не отличает асинхронный менеджер от синхронного по смыслу. Появился в Python 3.7; с 3.9 класс поддерживает параметризацию квадратными скобками.

Примеры

import contextlib
class ACM:
    async def __aenter__(self): return self
    async def __aexit__(self, *a): return False
print(issubclass(ACM, contextlib.AbstractAsyncContextManager))   # → True

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности