Sobes.tech
Junior — Middle
80

Барои он чизе ки объект бояд иҷро кунад, то ки бо истифода аз давраи in дар Python гузаронида шавад, кадом функсияҳоро бояд иҷро кунад?

Ширкатҳо дар куҷо пурсиданд
AstonAston

Ҷавоб аз 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__() позволяет объекту быть итерируемым.