"0 in [True,False]" returns True

Antoon Pardon apardon at forel.vub.ac.be
Wed Dec 14 02:55:34 EST 2005


Op 2005-12-13, Steve Holden schreef <steve at holdenweb.com>:
> Antoon Pardon wrote:
>> Op 2005-12-13, Chris Mellon schreef <arkanes at gmail.com>:
> [...]
>>>If you have a consistent API and you're checking for error values from
>>>your GTK functions, then you already have a lot more code than using 2
>>>varaibles will cost you. 10 lines, maybe.
>>>
>>>The fact that you think setting two variables is "too hard" but you're
>>>perfectly happy with checking for boolean types instead just testing
>>>truth values I think is a real problem.
>> 
>> 
>> These aren't just truth values. If I would have to go split in 
>> meaningfull truth values I would need at least three variables.
>> 
>> 
>>>You aren't saving yourself any
>>>performance. You're barely even saving yourself any typing, and you're
>>>making your code (intentionally, it seems) that much more compllicated
>>>and hard to understand.
>> 
>> 
>> There is nothing complicated or hard to understand.
>> 
> Nope, just a messy, hard to maintain misuse of a single variable for 
> multiple purposes.

No that variable has just one purpose, noting the state of the tube.

> Perfectly simple, perfectly easy to understand and 
> rather more bug-prone that a straightforward separation of state and 
> other data.

What you call other date is IMO just state information.

>> I find it odd that each time declaration are mentioned people here
>> react very rejecting and say that one of the features they love
>> about python is the freedom that a name is not limited to a variable
>> of one type, while when someone makes use of that freedom labeling
>> such code as code smell.
>> 
> There's a difference between using a single name to refer to values of 
> polymorphic types (which can therefore all be handled by the same code) 
> and using the same name to reference state information in one case (this 
>   item has no connected callback) and other data (the callback is to 
> such-and-such an object).
>
>> But lets make an effort to make the code more readable. What
>> about the following suggestion. I use a kind of EnumType with
>> two values: NotRegistered and Registerd. And the name of the
>> type is NotConnected. So I can then write
>> 
>>   if type(self.callback) is NotConnected.
>> 
>> Would that be selfdocumenting enough for you?
>> 
> It would be somewhat more self-documenting, but why not just use one 
> name to indicate the state and another, only meaningful in certain 
> states, to indicate the callback?

Why should I do that? Checking the type of a variable is conceptually
no different form testing set membership. So what I did, was just
bringing two disjoint sets togther and working with a variable from
that union. This is all in all a rather simple mathematical idea.
And I don't see why I should put certain information into a seperate
variable. It makes as much sense as working with numbers and using
a seperate variable to store whether a particular number is postive,
even or has some other characteristic. You don't seperate information
you can easily acquire from the variable itself. So why should I
seperate this information that is aquired just as easily?

-- 
Antoon Pardon



More information about the Python-list mailing list