Встречается на собеседованиях • сегодня
Что произойдет, если у объекта нет магического (dunder) метода __next__
Если у объекта нет метода __next__, но есть __iter__, то объект может использоваться в итерационных контекстах (например, в цикле for), но сам по себе не будет итератором. Если же отсутствует и __iter__, попытка итерирования вызовет TypeError.
Пример:
python
class NoNext:
def __iter__(self):
return self # Нарушение протокола: должен возвращать итератор
obj = NoNext()
for item in obj: # TypeError: iter() returned non-iterator of type 'NoNext'
passДля полноценного итератора нужны оба метода:
python
class ValidIter:
def __init__(self):
self.count = 0
def __iter__(self):
return self
def __next__(self):
if self.count >= 3:
raise StopIteration
self.count += 1
return self.count
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы