Встречается на собеседованиях • сегодня
Что может заменить магический (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__` не требуется.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы