このクラスをPython 3で動作させる方法を理解しようとしています。これはPython 2で動作します。これは、ジェネレータのためのD. Beasleyのチュートリアルです。私はPythonが初めてで、チュートリアルをオンラインで作業しています。python 2対python 3クラスwith __iter__
のPython 2
class countdown(object):
def __init__(self, start):
self.count = start
def __iter__(self):
return self
def next(self):
if self.count <= 0:
raise StopIteration
r = self.count
self.count -= 1
return r
c = countdown(5)
for i in c:
print i,
のPython 3、機能していません。
class countdown(object):
def __init__(self, start):
self.count = start
def __iter__(self):
return self
def next(self):
if self.count <= 0:
raise StopIteration
r = self.count
self.count -= 1
return r
c = countdown(5)
for i in c:
print(i, end="")
これはdocsにも記載されています。https://docs.python.org/3.0/whatsnew/3.0.html#operators-and-special-methods – jonrsharpe