aiter возвращает асинхронный итератор, у которого есть anext. Современный протокол Python требует вернуть итератор непосредственно, а не coroutine, которую сначала нужно await.
Что делает метод __aiter__?
__aiter__ возвращает асинхронный итератор, у которого есть __anext__. Современный протокол Python требует вернуть итератор непосредственно, а не coroutine, которую сначала нужно await.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
aiter возвращает асинхронный итератор, у которого есть anext. Современный протокол Python требует вернуть итератор непосредственно, а не coroutine, которую сначала нужно await.
class Stream:
def __aiter__(self):
return self
async def __anext__(self):
raise StopAsyncIteration
Объект может быть одновременно iterable и iterator, как здесь, либо создавать новый итератор при каждом обходе. async for вызывает этот протокол и ожидает каждый следующий элемент. Пример выше задаёт пустую последовательность.