Why does __ne__ exist?
Ugh, right, for NaN you can have (x < y) != (x >= y) - both would be false
if one of x and y is a NaN.
But __ne__ is still useless ;-)
On Mon, Jan 8, 2018 at 4:36 PM, Thomas Nyberg <tomuxiong at gmx.com> wrote:
> On 01/08/2018 03:25 PM, Oren Ben-Kiki wrote:
> > I am hard pressed to think of a case where __ne__ is actually useful.
> Assuming you're talking about a case specifically for IEEE 754, I'm
> starting to agree. In general, however, it certainly is useful for some
> numpy objects (as mentioned elsewhere in this thread).
> > That said, while it is true you only need one of (__eq__, __ne__), you
> > could make the same claim about (__lt__, __ge__) and (__le__, __gt__).
> > That is, in principle you could get by with only (__eq__, __le__, and
> > __ge__) or, if you prefer, (__ne__, __lt__, __gt__), or any other
> > combination you prefer.
> This isn't true for IEEE 754. For example:
> >>> float('nan') < 0
> >>> float('nan') > 0
> >>> float('nan') == 0
> Also there are many cases where you don't have a < b OR a >= b. For
> example, subsets don't follow this.
> > "Trade-offs... trafe-offs as far as the eye can see" ;-)
> Yes few things in life are free. :)