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