"0 in [True,False]" returns True

Grant Edwards grante at visi.com
Thu Dec 15 09:25:45 EST 2005


On 2005-12-15, Antoon Pardon <apardon at forel.vub.ac.be> wrote:

>>>>> Or return NaN instead of raising exception for numeric
>>>>> functions ?
>>>>
>>>> Because usually (in my applications anyway) NaN is a perfectly
>>>> valid value and not an "exception" case that needs to be
>>>> handled.
>>>
>>> I don't see the difference. In my application False and True
>>> (or Registered and UnRegistered if you prefer) are perfectly
>>> valid values too.  They are not "exception" cases that need to
>>> be handled.
>>
>> Well, in my case, a given name (or return value) is always
>> bound to a floating point object. I don't test the type of the
>> object and treat it in two different ways depending on what
>> type it is.  It's just a float.
>
> Do you find that difference so important?

Possibly.  In my case, a float is always a float.  You can
always do the same set of operations on it.

> As far as I understand
> the gtk identifiers are always positive integers. So I could
> have coded as follows:
>
>   UnConnected = (-1, -2)
>   Registered, UnRegistered = UnConnected

In your case, there isn't a single set of operations that work
regardles of the value.  You have to _check_ the value in order
to decide what operations are allowed on that value.  I'm not
saying the latter is "evil" but I think the distinction is
important.

>   ...
>
>   if self.cb_src in UnConnected:
>
> Now all values are integers and I no longer treat an object different
> depending on type but on value. However conceptually nothing changed.
> My code branches depending on set membership of this attribute.
>
> Could you explain why it should make a (big) difference between
> these two approaches?

Your examples are still both very different from the NaN
example.  A NaN is a floating point operation that supports all
the same operations as all other floating point operations.  In
your example an integer object of -2 does not support the same
"operations" that a "real" GTK identifier does.  They are two
different types.

-- 
Grant Edwards                   grante             Yow!  Hey, wait a
                                  at               minute!! I want a
                               visi.com            divorce!!... you're not
                                                   Clint Eastwood!!



More information about the Python-list mailing list