JustCaptain kod-buduschego
llm/middle-senior-1ddacb
Перейти к файлу
Код
task_7.py
"""
Задача 7. Свой iterator
Предметная область: Робот доставщик проходит точки маршрута.
Маршрут:
Склад
Улица
Подъезд
Квартира

Условие: Создайте собственный iterator через класс.
Используйте:

__iter__()
__next__()

Пример:
route = DeliveryRoute()
for point in route:
print(point)

Что тренируется: устройство iterator изнутри, StopIteration, хранение состояния
"""


class DeliveryRoute:
    def __init__(self):
        self.routes: list[str] = ["Склад", "Улица", "Подъезд", "Квартира"]
        self.current_position: int | None = None
        self.target_id: int | None = None

    def __iter__(self):
        return self

    def __next__(self) -> str:
        if self.target_id is None:
            self.target_id = 0
            return self.routes[self.target_id]
        else:
            try:
                self.current_position = self.target_id
                self.target_id += 1
                return self.routes[self.target_id]
            except IndexError:
                raise StopIteration


route = DeliveryRoute()
for point in route:
    print(point)