Sobes.tech
Junior — Middle

Роли махсус усулҳо (dunder) дар иҷрои генераторҳо ва истифодаи онҳо дар Python чист?

sobes.tech AI

Ҷавоб аз AI

በPython ውስጥ ልዩ ዘዴዎች (dunder methods) እንደ __iter__(), __next__() በመፈፀም የጀነሬተሮችና እንቅስቃሴ አሰፋላሊ ሚና እንደሚጫወቱ አሳያል።

ጀነሬተሮች እንደ እቃ የሚያስችሉት እንደ እቃ የሚያስተላለፉት እና በፍጥነት ሲሰሩ እንደሚያስችሉ እንደ እቃ ናቸው።

  • __iter__() የእቃውን እንቅስቃሴ ይመለሳል (ብዙ ጊዜ እርሱ ራሱ ነው).
  • __next__() ቀጣይ እቃ ይመለሳል ወይም ሲያገኙ የStopIteration ልብስ ይወጣል።

ስለዚህ በyield ቃል በመጠቀም በሚፈልጉት ሁኔታ የጀነሬተሮች እቃ በሚሰራ ሁኔታ ይፈጥራል።

ቀላል የእንቅስቃሴ አሰፋላሊ ምሳሌ በdunder መንገዶች ማከናወን:

class CountUpTo:
    def __init__(self, max):
        self.max = max
        self.current = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.current >= self.max:
            raise StopIteration
        self.current += 1
        return self.current

for number in CountUpTo(3):
    print(number)

በዚህ መልኩ, የdunder መንገዶች የእንቅስቃሴ ስርዓትን ይሰጣሉ እና በዚህ መሠረት የጀነሬተሮች እና በሌሎች እንቅስቃሴ እቃዎች ላይ ማጠቃለያ ይሰጣሉ።