Python 为什么numbers.Real没有作为抽象(或默认)方法的u_gt_u_u?

Python 为什么numbers.Real没有作为抽象(或默认)方法的u_gt_u_u?,python,abc,Python,Abc,查看源代码以确定是否没有@abstractmethod或\uugt\uuuu或的实现。为什么会这样?这是虫子吗 文件明确指出: 对于Complex,Real添加了处理实数的操作。简而言之,它们是:到浮点的转换,trunc(),divmod,%,=。Real还为派生操作提供默认值 据我所知,这对于和=来说是不正确的 默认实现应该足够简单,因为ABCReal需要实现\uu lt\uuuuuuuu和\uuuuuuu le\uuuuu。e、 g def\uuugt\uuuuuu(自身、其他): 返回运算

查看源代码以确定是否没有
@abstractmethod
\uugt\uuuu
的实现。为什么会这样?这是虫子吗

文件明确指出:

对于Complex,Real添加了处理实数的操作。简而言之,它们是:到浮点的转换,trunc(),divmod,%,=。Real还为派生操作提供默认值

据我所知,这对于
=
来说是不正确的

默认实现应该足够简单,因为ABC
Real
需要实现
\uu lt\uuuuuuuu
\uuuuuuu le\uuuuu
。e、 g

def\uuugt\uuuuuu(自身、其他):
返回运算符.lt(其他,自身)

同样,为什么这不是
numbers.py中的默认值?

这不是必需的,因为“您的默认值有问题,默认值是个坏主意。
a>b
已经尝试了
b.\uu lt\uu(a)
如果
a.\uuu gt\uuuu
不存在或返回
NotImplemented
。您的默认值会导致无限递归
“总排序”指的是;这并不是说实现
(文档字符串也不太正确,因为
-0.0
也会破坏总排序。)@user2357112supportsMonica-0.0如何打破总排序?请注意-0.==0。总排序不允许不同的元素比较相等,-0.0在行为上不同于0.0。@user2357112supportsMonica但就排序而言,它们不是不同的元素(如果你把两个带符号的零放进一个集合,或者一个dict,元素将是唯一的)。那么,如果你说它打破了一个总的顺序,那么告诉我哪些属性被打破了-自反性、反对称性、传递性或可比性?你从哪里看到
a>b
尝试
b.u lt_uu(a)
如果
a.\uuu gt\uuuu
不存在或返回
NotImplemented
?@bkanuka:,例如。请参阅比较运算符下的最后一段。您也可以在a中看到它发生。
1.0
不工作正是促使我研究这个问题的原因。我现在明白了。不需要让用户实现
\uuugt\uuuu
函数,因为有了“\uu lt\uuuuu”和
\uu le\uuu
,就定义了一个总的顺序,从而满足了对真实对象的技术/数学要求。
>>> print(numbers.Real.__lt__.__doc__)
self < other

        < on Reals defines a total ordering, except perhaps for NaN.