2016-05-23 6 views
0

Ich lerne Python und begann gerade über Iteratoren und iterables zu lesen, ich habe gelesen this Post und this beide, die versuchen, dieses Konzept zu erklären. Allerdings beim Lesen dieses Beispiels. Ich habe es geschrieben unterwer ruft tatsächlich __iter__ Methode

class zrange: 
    def __init__(self, n): 
     self.n = n 

    def __iter__(self): 
     return zrange_iter(self.n) 

class zrange_iter: 
    def __init__(self, n): 
     self.i = 0 
     self.n = n 

    def __iter__(self): 
     # Iterators are iterables too. 
     # Adding this functions to make them so. 
     return self 

    def next(self): 
     if self.i < self.n: 
      i = self.i 
      self.i += 1 
      return i 
     else: 
      raise StopIteration() 

nun das obige Beispiel als solche

>>> z = zrange(5) 
>>> list(z) 
[0, 1, 2, 3, 4] 

Meine Frage verwendet wird, ist, wann oder wer die iter Methode aufruft?

und meine nächste Frage war, was war der Punkt des Hinzufügens def __iter__(self) in Klasse zrange_iter?

Antwort

2

__iter__ wird von der iter Builtin aufgerufen, und wird auch verwendet, um Iteration in der for ... in ... Schleife zu unterstützen.

Verwandte Themen