在Basic customisation中,python docs说明了比较方法:
[没有这些方法的交换参数版本]; 相反,
__lt__()
和__gt__()
是彼此的反映,__le__()
和__ge__()
是彼此的反映,而__eq__()
和__ne__()
是他们自己的反思
__lt__()
和__ge__()
是彼此的反映(以及__le__()
和__gt__()
),我不会感到惊讶。
虽然文档也说明了:
......比较运算符之间没有其他隐含的关系,例如
(x<y or x==y)
的真实性并不意味着x<=y
,
什么,如果有的话, 或者是选择反思关系的理由?
答案 0 :(得分:6)
因为a < b
和b > a
相同,因为a <= b
和b >= a
。
答案 1 :(得分:2)
反射意味着交换操作数,而不是应用&#34;不是&#34;给运营商。
__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)
但这不是反思的意思。