Junior — Middle
80
Барои он чизе ки объект бояд иҷро кунад, то ки бо истифода аз давраи in дар Python гузаронида шавад, кадом функсияҳоро бояд иҷро кунад?
Ширкатҳо дар куҷо пурсиданд
Ҷавоб аз AI
sobes.tech AI
Чтобы объект можно было обходить с помощью цикла 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__() позволяет объекту быть итерируемым.