Junior — Middle
86
Quelles fonctions un objet doit-il implémenter pour pouvoir être parcouru avec une boucle in en Python?
Entreprises à qui on a demandé
Réponse de l'IA
sobes.tech IA
Чтобы объект можно было обходить с помощью цикла for ... in в Python, он должен реализовывать протокол итерации. Это значит, что объект должен иметь метод __iter__(), который возвращает итератор.
Итератор, в свою очередь, должен реализовывать метод __next__(), который возвращает следующий элемент последовательности и возбуждает исключение StopIteration, когда элементы заканчиваются.
Пример:
class MyIterable:
def __init__(self, data):
self.data = data
def __iter__(self):
self.index = 0
return self
def __next__(self):
if self.index < len(self.data):
result = self.data[self.index]
self.index += 1
return result
else:
raise StopIteration
obj = MyIterable([1, 2, 3])
for item in obj:
print(item)
Таким образом, наличие методов __iter__() и __next__() позволяет объекту быть итерируемым.