CodeBlanks Logo Icon CodeBlanks

__iter__ ve __next__

__iter__ ve __next__ ile yinelenebilirliği öğrenirsin.

__iter__ ve __next__

Bir sınıfı for döngüsünde kullanılabilir yapmak için __iter__ ve __next__ metotları tanımlanır. __iter__ bir iteratör döndürür; __next__ bir sonraki öğeyi verir.

Örnek: class Counter:\n def __iter__(self):\n return self\n def __next__(self):\n .... for n in c yazımı önce __iter__'i, sonra her adımda __next__'i çağırır. Öğe bittiğinde __next__, StopIteration fırlatır; döngü biter.

for döngüsü akışı

for n in c yazımı şöyle çalışır: önce iter(c) ile __iter__ çağrılır; dönen iteratör üzerinde her adımda next() ile __next__ çağrılır. StopIteration fırlatıldığında döngü biter.

Örnek: Counter(3) üç öğe verir. for n in Counter(3): print(n) 0, 1, 2 yazdırır. Her next() bir değer döndürür; dördüncü çağrıda StopIteration fırlatılır. Bu protokol, tüm yineleyiciler için aynıdır.

Uygulama Counter sınıfına iteratör ekle

Counter sınıfını tanımla. def __init__(self, limit): ve gövdede self.limit = limit ve self.current = 0 yaz. def __iter__(self): ve gövdede return self yaz. def __next__(self): ekle; gövdede if self.current >= self.limit:, raise StopIteration, sonra value = self.current, self.current += 1 ve return value yaz. Sonra c = Counter(3) ve for n in c: print(n) çağrısı yap.

Başlangıç kodu

main.py
# Counter sınıfını tanımla

Örnek çözüm

main.py
# Counter sınıfını tanımla
class Counter:
    def __init__(self, limit):
        self.limit = limit
        self.current = 0
    def __iter__(self):
        return self
    def __next__(self):
        if self.current >= self.limit:
            raise StopIteration
        value = self.current
        self.current += 1
        return value

c = Counter(3)
for n in c:
    print(n)

Beklenen çıktı

0
1
2

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 __next__ öğe bittiğinde ne fırlatır?

  • ValueError
  • TypeError
  • IndexError
  • StopIteration Doğru cevap

Açıklama: StopIteration, döngünün bittiğini bildirir.

2 __iter__ gövdesini tamamla

Soru
    def __iter__(self):
        return ____
Cevap
    def __iter__(self):
        return self

Açıklama: Sınıfın kendisi iteratör olduğunda __iter__ self döndürür.

3 İteratör metotlarını eşle

Kavram Anlamı
__iter__ İteratör döndürür
__next__ Sonraki öğe
StopIteration Döngü sonu

Orta seviye bölümündeki tüm dersler