comparison with None

Alex Martelli aleax at mac.com
Fri Apr 20 22:48:02 EDT 2007


Gabriel Genellina <gagsl-py2 at yahoo.com.ar> wrote:

> En Fri, 20 Apr 2007 11:40:00 -0300, Alex Martelli <aleax at mac.com> escribió:
> 
> > I'm still interested to know where that erroneous quote from Alan Isaac
> > comes from, because if it's in Python's docs, it can be fixed.
> 
> It was a partial quote, that's why it appeared to be wrong:
> 
> Library reference, 3.3 Comparisons
> 
> "Objects of different types, except different numeric types and different
> string types, never compare equal; such objects are ordered consistently
> but arbitrarily."
> 
> Reference Manual, 5.9 Comparisons
> 
> "The objects need not have the same type. If both are numbers, they are
> converted to a common type. Otherwise, objects of different types always
> compare unequal, and are ordered consistently but arbitrarily."
> 
> (Apart from the latter not menctioning string types too, looks good to me).

Right.  However, it might be worth underscoring that this applies to
_built-in_ types, and user-defined types are free to implement different
comparison semantics, although that should be done with care and good
taste; for example, one might have a collection type defining __eq__ to
mean "the same set of items as the other [iterable] operand in any
order", though that might cause weird behavior such as a==b but b!=a
(unfortunately there's no __req__, and __coerce__ is not involved in
comparisons either).

Still, not a major concern -- numbers and strings _do_ exhaust a vast
majority of the use cases for object of different types comparing equal.


Alex



More information about the Python-list mailing list