Nasıl sınıf iterable yapmak için?
Nasıl bir Python iterable işlev veya sınıf yaratacak?
CEVAP
Temelde iki yöntem sağlar anlamına gelir yineleyici protokolüne uygun olarak python yineleyici nesneleri: __iter__()
next()
. __iter__
döner yineleyici nesne ve dolaylı olarak döngü başlangıcında denir. next()
yöntemi bir sonraki değeri döndürür ve dolaylı olarak her döngü artım denir. next()
örtülü olarak yineleme durdurmak için döngü yapıları tarafından yakalanan dönmek için daha fazla değer olduğunda Stopİteration bir özel durum oluşturur.
Burada bir sayaç basit bir örnek:
class Counter:
def __init__(self, low, high):
self.current = low
self.high = high
def __iter__(self):
return self
def next(self): # Python 3: def __next__(self)
if self.current > self.high:
raise StopIteration
else:
self.current = 1
return self.current - 1
for c in Counter(3, 8):
print c
Bu baskı
3
4
5
6
7
8
Bu daha önceki bir cevap kaplı olarak bir jeneratör kullanarak, yazmak için
def counter(low, high):
current = low
while current <= high:
yield current
current = 1
for c in counter(3, 8):
print c
Yazılı çıktı aynı olacaktır. Kaputun altında, jeneratör nesne yineleyici protokolünü destekler ve bir sınıf Aşağı Yukarı benzer bir Sayaç yok.
David Mertz Madde, Iterators and Simple Generators oldukça iyi bir giriş.
Nasıl bir dondurma dondurmak için .NET...
Nasıl div içeriğini daha büyük değil y...
Nasıl dava Vim / küçük harf duyarlı ar...
Nasıl twitter bootstrap menü hover yer...
Sekmeler arasında geçiş yapmak için na...