python 2 vs python 3 class with __iter__
本问题已经有最佳答案,请猛点这里访问。
我正试图弄清楚如何使这个类在Python3中工作,它在Python2中工作。这是D.Beasley为发电机提供的教程。我对python不熟悉,只是在网上学习教程。
Python 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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,不工作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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="") |
在python 3中,迭代器的特殊方法从
您可以通过以下
1 | __next__ = next |
所以每个版本的python都会找到它需要的名称。