Как реализовать обход пользовательской коллекции в стиле Python 2, без yield from?

Без yield from можно явно перебрать вложенную коллекцию циклом и выдавать элементы через yield. Для собственного итератора в Python 2 использовали next, а в Python 3 — __next__.

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

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

Без yield from можно явно перебрать вложенную коллекцию циклом и выдавать элементы через yield. Для собственного итератора в Python 2 использовали next, а в Python 3 — next.

Подробный разбор

Ответ с пояснениями

Без yield from можно явно перебрать вложенную коллекцию циклом и выдавать элементы через yield. Для собственного итератора в Python 2 использовали next, а в Python 3 — next.

class Collection:
    def __init__(self, items):
        self.items = items
    def __iter__(self):
        for item in self.items:
            yield item

Такой простой генераторный обход работает без делегирования yield from. Если нужна именно поддержка legacy Python 2, учитывайте различия протокола и прекращённую поддержку языка; новый код лучше писать для поддерживаемой версии.

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

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

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

Подробнее