Nasıl sınıf iterable yapmak için? | Netgez.com
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

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • TheForgottenGamer1

    TheForgotten

    28 AÄžUSTOS 2009
  • wwjoshdew

    wwjoshdew

    1 AÄžUSTOS 2007