Встречается на собеседованиях • сегодня

Что может заменить магический (dunder) метод __next__

Магический метод __next__ можно заменить с помощью функции next(), которая вызывает __next__ у объекта. Также можно использовать итераторы вручную, например, через iter() и next().

Пример:

python
class Counter:
    def __init__(self, max_val):
        self.max_val = max_val
        self.current = 0
text
def __iter__(self):
    return self

def __next__(self):
    if self.current >= self.max_val:
        raise StopIteration
    self.current += 1
    return self.current - 1

Альтернатива без next (через генератор)

def counter_gen(max_val):
current = 0
while current < max_val:
yield current
current += 1

Использование

counter1 = Counter(3)
counter2 = counter_gen(3)

print(next(counter1)) # 0
print(next(counter2)) # 0

text

Генераторы (`yield`) автоматически реализуют протокол итератора, поэтому `__next__` не требуется.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы