newbie question

Steve Holden steve at
Mon Dec 20 10:50:24 CET 2004

Doug Holton wrote:

> David Wurmfeld wrote:
>> I am new to python; any insight on the following would be appreciated, 
>> even if it is the admonition to RTFM (as long as you can direct me to 
>> a relevant FM)
>> Is there a standard approach to enumerated types? I could create a 
>> dictionary with a linear set of keys, but isn't this overkill? There 
>> is afterall a "True" and "False" enumeration for Boolean.
> To actually answer your question, no, there is no standard for enums in 
> python.  There are custom hacks for it that you can search for.
> Boo, a programming language that is virtually identical to python, does 
> have standard enums:
> enum Color:
>     Red
>     Green
>     Blue
> See
> In fact, since not many seem to be aware of its existence, I encourage 
> everyone here to check out boo as an alternative to python.
>> Is there a way to ignore case in string comparisons? I want 'Oranges' 
>> to equal 'oranges' when using the evaluation operator (==). I don't 
>> care about string inequalities (<, >)
> No, not with the == operator, unless you use:
> s1.lower() == s2.lower()
> Visual Basic is the only language I am aware of that has 
> case-insensitive strings.
>> Finally, (for now at least) consider the following list.
>> myList = [apple, 13, plum, cherry, 'Spam', tomato, 3.35]
>> Exactly how does the "for x in myList" work?
>> If the list is a heterogeneous list of disparate types, the == 
>> operator works fine, independent of type.
>> For example, (if x == 'spam') evaluates as false if the item in the 
>> list is an integer. But if I try to do this: (if x.__abs()__) throws 
>> an exception if x "pulls" a non integer from the list. Wouldn't you 
>> think that an iterative would have the "sense" to understand that in 
>> this limited scope if a method didn't apply to the iterator just 
>> "fail" (i.e. evaluate to False) the evaluation and move along? Do I 
>> have to manually interrogate each iteration for the proper type before 
>> I test?
>> Think about it; the interpreter has to evaluate disparate types for 
>> equality. How exactly does the it "know" that for this iteration, x is 
>> an integer, and the evaluation (if x == 'spam') is False, and doesn't 
>> throw an exception for a type mismatch?
> Because python is a strongly typed.  If you want to perform a type 
> specific operation like abs() or string.lower(), but the object's type 
> may not be the right type, then you have to check its type first.
> In boo, we have an "isa" operator for this purpose:
> if x isa string:
>     ....
> or:
> for item in myList:
>     given typeof(item):
>         when string:
>             print item.ToLower()
>         when int:
>             print Math.Abs(item)

It appears you should read your own remarks from the "Web forum (made by 
python)" thread :-)

whereas-my-ego-couldn't-be-smaller-ly yr's  - steve
Steve Holden     
Python Web Programming
Holden Web LLC      +1 703 861 4237  +1 800 494 3119

More information about the Python-list mailing list