我试图重新创建Python的range
作为学习练习,并注意到范围具有range.__gt__
,range.__ge__
等属性。它是在范围内专门定义的,因为范围也有8个属性,其限定名称为object.__...__
。
我想知道范围比较用于什么。 range(*x) <= range(*y)
的所有尝试都会引发TypeError: unorderable types: range() > range()
答案 0 :(得分:1)
Python 3范围对象定义了以下丰富的比较(取自C source):
EQ
正如您所看到的,实际实现的唯一比较是Py_RETURN_NOTIMPLEMENTED
和{{1}},这些比较用于不等式和相等。其他比较,如大于等于,大于等等,都是{{1}},因此虽然它们是“技术上”实现的(如在内置对象中定义比较方法),但它们会抛出NotImplementedError。 / p>