__iter__()と_next__()
947 ワード
クラスが
フィボナッチ数列を例にとると、
例を使用してテストします.
for ... in
サイクルに使用されるように反復可能なオブジェクトを実装するには、list
またはtuple
のように、__iter__()
メソッドを実装する必要があります.このメソッドは反復オブジェクトを返し、Pythonのfor
サイクルは反復オブジェクトの__next__()
メソッドを呼び出してサイクルの次の値を取得します.StopIteration
エラーが発生するまでループを終了します.フィボナッチ数列を例にとると、
for
サイクルに作用するFibクラスを書きます.class Fib(object):
def __init__(self, max_value):
self.a, self.b = 0, 1 # a,b
self.max_value = max_value #
def __iter__(self):
return self # ,
def __next__(self):
self.a, self.b = self.b, self.a + self.b #
if self.a > self.max_value: #
raise StopIteration()
return self.a #
例を使用してテストします.
>>> fib = Fib(100)
>>> for i in fib:
print(i)
1
1
2
3
5
8
13
21
34
55
89