为什么(LT,GT)和(LE,GE)反射而不是(LT,GE)和(LE,GT)

  • 本文关键字:LE GE GT LT 反射 python
  • 更新时间 :
  • 英文 :


在基本自定义中,python docs关于比较方法的状态:

[这些方法没有交换题]; 相反,__lt__()__gt__()是彼此的反射,__le__()__ge__()是彼此的反射,__eq__()__ne__()是他们自己的反射。

我对__lt__()__ge__()的反思会让我感到惊讶(以及__le__()__gt__())。

虽然文档也说:

…比较操作员之间没有其他隐含关系,例如,(x<y or x==y)的真相并不暗示x<=y

如果有的话,什么是或将是选择的反射关系的理由?

,因为 a < bb > a是等效的, a <= bb >= a

反射意味着交换操作数,而不是将"不是"应用于操作员。

__lt__(a,b)
    # if we don't know what to do, call
    return __gt__(b,a)

您在想以下

__lt__(a,b)
    # if we don't know what to do 
    return not __ge__(a,b)

但这不是反射的意思。

相关内容