为什么添加两个具有 timedelta 值的计数器会引发 TypeError?

Why does adding two Counters with timedelta values raise a TypeError?

我正在尝试添加两个包含时间增量的计数器。添加计数器会引发以下问题:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/3.7.2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/collections/__init__.py", line 734, in __add__
    if newcount > 0:
TypeError: '>' not supported between instances of 'datetime.timedelta' and 'int'

这会引发异常:

from collections import Counter
from datetime import timedelta
a = Counter(time=timedelta(microseconds=167242))
a + a

然而这不是:

b = timedelta(microseconds=167242)
b + b

有几件事妨碍了:

  1. Counter是用来做离散计数的,也就是数值都是整数。
  2. timedeltas 没有定义与零比较的含义,尽管他们可以定义。

看来您需要创建自己的 Counter-like 结构。