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