Sobes.tech
Junior — Middle

როდის ხდება ზუსტად __iter__ მეთოდის აქტივაცია ობიექტზე ინტერაციის დროს?

sobes.tech AI

პასუხი AI-სგან

Python-ში __iter__ მეთოდი გამოიძახება მაშინ, როდესაც იწყება ობიექტზე იტერაცია, მაგალითად, for ციკლის გამოყენებისას. კონკრეტულად, როდესაც ინტერპრეტატორი ხვდება for element in obj: კონსტრუქციას, ის გამოიძახებს obj.__iter__() რათა მიიღოს იტერატორი.

ამ იტერატორმა უნდა განახორციელოს მეთოდი __next__, რომელიც აბრუნებს სერიის შემდეგ ელემენტს. იტერაცია გრძელდება მანამ, სანამ __next__ არ გამოიწვევს გამონაკლისს StopIteration.

მაგალითი:

class MyRange:
    def __init__(self, n):
        self.n = n
    def __iter__(self):
        self.current = 0
        return self
    def __next__(self):
        if self.current < self.n:
            val = self.current
            self.current += 1
            return val
        else:
            raise StopIteration

for i in MyRange(3):
    print(i)

აქ, ციკლში შესვლისას, გამოიძახება MyRange(3).__iter__(), რომელიც აბრუნებს იტერატორ ობიექტს (ამ შემთხვევაში, იგივე ობიექტს), და შემდეგ გამოიძახება __next__ ელემენტების მისაღებად.