default object comparison considered harmful?

castironpi castironpi at gmail.com
Fri May 16 09:18:22 EDT 2008


On May 16, 7:23 am, Bruno Desthuilliers <bruno.
42.desthuilli... at websiteburo.invalid> wrote:
> Kay Schluehr a écrit :
>
>
>
>
>
> > On 16 Mai, 10:03, "A.T.Hofkamp" <h... at se-162.se.wtb.tue.nl> wrote:
> >> Hello all,
>
> >> Yesterday we found the cause of a bug that has caused problems for a long time.
> >> It appeared to be the following:
>
> >> class A(object):
> >>     pass
>
> >> print min(1.0, A())
>
> >> which is accepted by Python even though the A() object is not numerical in
> >> nature.
>
> >> The cause of this behavior seems to be the compare operation of the object
> >> class.
>
> >> Is there a way to disable this behavior in Python (other than deriving a new
> >> 'object-like' class that doesn't do comparisons?)
>
> > Are you sure you don't want to use a statically typed language that
> > captures all type errors just by inspecting your source code?
>
> This is not necessarily a static vs dynamic typing problem. The
> following code will raise a TypeError for very good reasons:
>
>     print 1.0 + A()- Hide quoted text -
>
> - Show quoted text -

I question the real-world examples of coercion, casting, and
upcasting.  C insists that defining by operator, which may or may not
relate to system, is the only legal move.  I doubt operator+ is well-
defined on non-ideal structures.  Rationals are not floats, but system
got checked.  Define concurrency.



More information about the Python-list mailing list