私はPythonにかなり慣れておらず、イテレータオブジェクトを定義するいくつかの例を見ていました。
私が見た例は:
class fibit: # iterate through fibonacci sequence from 0,1...n<=max
def __init__(self, max):
self.max = max
def __iter__(self):
self.a = 0
self.b = 1
return self
def next(self):
fib = self.a
if fib > self.max:
raise StopIteration
self.a, self.b = self.b, self.a + self.b
return fib
しかし、self.aとself.bの初期化をiterからinitに移動すると、(私の単純な理解では)まったく同じように機能するように見えます。
class fibit: # iterate through fibonacci sequence from 0,1...n<=max
def __init__(self, max):
self.a = 0
self.b = 1
self.max = max
def __iter__(self):
return self
def next(self):
fib = self.a
if fib > self.max:
raise StopIteration
self.a, self.b = self.b, self.a + self.b
return fib
では、これを行うための推奨される方法はどれですか?
ありがとう。:)