SORU
21 AĞUSTOS 2008, PERŞEMBE


Nasıl sınıf iterable yapmak için?

Nasıl bir Python iterable işlev veya sınıf yaratacak?

CEVAP
23 AĞUSTOS 2008, CUMARTESİ


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ş.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 1881 Animation

    1881 Animati

    5 EKİM 2013
  • B4ROK

    B4ROK

    1 EKİM 2008
  • FlippinWindows | #1 Windows Tutorial Channel!

    FlippinWindo

    23 Mayıs 2010