On Mar 17, 2010, at 5:02 PM, Greg Ewing wrote: > Raymond Hettinger wrote: > >> Python 3 doesn't need it because it is possible to not give a result >> at all. Python 2 does need it because we have to give *some* >> result. > > That's not true -- it's possible for comparisons to raise > an exception in 2.x, and they sometimes do already:
Complex objects do not support __float__. Decimal objects do. If an object supports __float__, then a float comparison coerces its other argument via __float__ and the other argument never gets a chance to raise an exception. >>> class D: def __float__(self): return 3.14 >>> float(D()) 3.1400000000000001 >>> float(complex(3.14)) Traceback (most recent call last): File "<pyshell#14>", line 1, in <module> float(complex(3.14)) TypeError: can't convert complex to float >>> D() < 10.0 True >>> complex(3.14) < 10.0 Traceback (most recent call last): File "<pyshell#16>", line 1, in <module> complex(3.14) < 10.0 TypeError: no ordering relation is defined for complex numbers Raymond _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com