Numeric comparison anomaly
Gary Herron
gherron at islandtraining.com
Thu Feb 20 18:47:38 EST 2003
On Thursday 20 February 2003 02:28 pm, Jim Meyer wrote:
> Hello!
>
> On Thu, 2003-02-20 at 13:30, Gary Herron wrote:
> > > > From: Piet van Oostrum [mailto:piet at cs.uu.nl]
> > > > Sent: Thursday, February 20, 2003 4:56 AM
> > > >
> > > > >>>>> Gerrit Holl <gerrit at nl.linux.org> (GH) schreef:
> > > >
> > > > GH> You can use the __cmp__ overloader:
> > > >
> > > > GH> 21 >>> class A:
> > > > GH> 21 ... def __cmp__(self, other):
> > > > GH> 21 ... return 1
> > > > GH> 21 ...
> > > > GH> 22 >>> A() > 5
> > > > GH> True
> > > > GH> 23 >>> A() < 9
> > > > GH> False
> > > > GH> 24 >>> A() >= 3
> > > > GH> True
> > > >
> > > > >>> inf = A()
> > > > >>> inf > inf
> > > >
> > > > True
> > > >
> > > > >>> inf == inf
> > > >
> > > > False
> >
> > This is correct of course. By having __cmp__ return 1 *always*, you
> > are saying inf is greater than *anything* else without regard to what
> > the other thing is. (Note that your __cmp__ does not even look at the
> > second argument.) It will never compare equal to anything (__cmp__
> > would need to return a zero for that).
>
> While I understand that this is the correct behavior for the above
> implementation, I wonder if the implicit question wasn't "Shouldn't
> infinity evaluate to be equal to infinity?"
No his question was not about what properties a representation of
infinity *should* have, but rather why his particular object was
exhibiting the behavior he was seeing. Once one understands the
behavior of his "inf", one can attempt to produce a less naive and
more useful representation of infinity which exhibits the desired
behavior.
Gary Herron
More information about the Python-list
mailing list