Python 3.5+collectionsпонятие
collections.abc.AsyncIterator
collections.abc — протоколы
Протокол асинхронного итератора: есть __anext__ и __aiter__.
Синтаксис
isinstance(obj, collections.abc.AsyncIterator)
isinstance здесь работает структурно: любой объект с __anext__ и __aiter__ пройдёт проверку без наследования и регистрации, но проверяется лишь наличие методов, а не то, что они действительно делают. Асинхронный генератор одноразовый — после того как async for дошёл до конца, повторный проход не выдаст ничего. Руками этот протокол пишут редко: async def с yield внутри даёт его бесплатно.
Примеры
import collections.abc as abc
async def ag():
yield 1
print(isinstance(ag(), abc.AsyncIterator)) # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности