Что делает метод __aiter__?

__aiter__ возвращает асинхронный итератор, у которого есть __anext__. Современный протокол Python требует вернуть итератор непосредственно, а не coroutine, которую сначала нужно await.

Короткий ответ

Что ответить на собеседовании

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 вызывает этот протокол и ожидает каждый следующий элемент. Пример выше задаёт пустую последовательность.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее