"AndyL" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED]
> 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


-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to