Python Glossary English

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Сообщить о неточности