Зачем нужны магические (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()`, генераторах и других итерационных контекстах.