Python中itertools.count的等价

时间:2014-03-25 16:48:41

标签: python itertools

考虑交互式Python代码:

>>> from itertools import count
>>> count(0) == count(0)
False

为什么此处未实现等式并且默认为标识?这是故意还是仅仅是疏忽?

编辑:我没有让自己清楚。正如Martijn Pieters在评论中指出的那样,我希望将等式表示为起始点的相等性,而不知道迭代器的当前状态也被count对象跟踪。

1 个答案:

答案 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)