Зачем нужны магические (dunder) методы в итераторе

Python Senior Без компании
Зачем нужны магические (dunder) методы в итераторе
Ответы
Магические методы (dunder) в итераторе позволяют объекту поддерживать итерацию в циклах `for` и других контекстах, где требуется перебор элементов. Основные методы: - `__iter__()` — возвращает сам итератор (или новый итератор для коллекции). - `__next__()` — возвращает следующий элемент или вызывает `StopIteration`, если элементы закончились. Пример: ``` class CountUpTo: def __init__(self, max_val): self.max_val = max_val self.current = 0 def __iter__(self): return self def __next__(self): if self.current >= self.max_val: raise StopIteration self.current += 1 return self.current - 1 # Использование: for num in CountUpTo(5): print(num) # 0, 1, 2, 3, 4 ``` Без этих методов объект не будет работать в `for`, `next()`, генераторах и других итерационных контекстах.