__iter__ ve __next__
- Python kursu
- Orta seviye
- Ders 33/116
- 5 dk
__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
# Counter sınıfını tanımlaÖrnek çözüm
# 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
def __iter__(self):
return ____
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 |