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__՝ տարրերը ստանալու համար։