考虑交互式Python代码:
>>> from itertools import count
>>> count(0) == count(0)
False
为什么此处未实现等式并且默认为标识?这是故意还是仅仅是疏忽?
编辑:我没有让自己清楚。正如Martijn Pieters在评论中指出的那样,我希望将等式表示为起始点的相等性,而不知道迭代器的当前状态也被count
对象跟踪。
答案 0 :(得分:0)
结束Martijn Pieters和J. F. Sebastian给出的有用评论并将其结束:itertools.count
被设计为迭代器,从而跟踪其当前的迭代状态。因此,如何定义平等并不明显。
我以下列方式结束了包装计数,以达到我预期的行为:
import itertools
class count(object):
def __init__(self, start=0, step=1):
self.start = start
self.step = step
def __eq__(self, other):
return self.start == other.start and self.step == other.step
def __iter__(self):
return itertools.count(self.start, self.step)