2016-05-23 2 views
0

私はPythonを学んでおり、イテレータとイテラブルについて読んでいます。私はthisポストとthisポストを読んでこの概念を説明しようとしています。しかし、この例を読むとき。私は今、上記の例では、 実際に__iter__メソッドを呼び出す人

>>> z = zrange(5) 
>>> list(z) 
[0, 1, 2, 3, 4] 
として使用されている私の質問をするときや、誰 ITERメソッドを呼び出している

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() 

の下にそれを掲載していますか?

私の次の質問は、def __iter__(self) のクラスzrange_iterに追加点がありましたか?

答えて

2

__iter__は、iterビルトインによって呼び出され、for ... in ...ループの反復をサポートするためにも使用されます。

関連する問題