what is the the best way to express following:
Paul McGuire
ptmcg at austin.rr._bogus_.com
Mon Mar 27 21:42:24 EST 2006
"AndyL" <ask at me> wrote in message news:_uOdnaBMCLmcPLXZRVn-uA at comcast.com...
> if type(key).__name__ == "int" or type(key).__name__ == "long":
> abc()
> elif type(key).__name__ == "str":
> efg()
> elif type(key).__name__ == "tuple" or type(key).__name__ == "list":
> ijk()
>
>
> In other words I need to determinie intiger type or string or []/() in
> elegant way, possibly without or ...
>
> Thx, A.
Your literal Pythonic approach is to use the isinstance() builtin:
if isinstance(key,(int,long)):
abc()
elif isinstance(key,str):
efg():
elif isinstance(key,(tuple,list)):
ijk()
But since you are dispatching to a method based on type (or some other type
of enumerated condition), even more Pythonic is to use a dict to create a
dispatch table:
dispatch = {
int : abc,
long : abc,
str : efg,
tuple : ijk,
list : ijk,
}
try:
fn = dispatch[ type(key) ]
except KeyError:
print "No handler for key of type", type(key)
else:
fn()
-- Paul
More information about the Python-list
mailing list