Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python isinstance vs hasattr vs try/except: What is better?

Tags:

I am trying to figure out the tradeoffs between different approaches of determining whether or not with object obj you can perform action do_stuff(). As I understand, there are three ways of determining if this is possible:

# Way 1
if isinstance(obj, Foo):
    obj.do_stuff()

# Way 2
if hasattr(obj, 'do_stuff'):
    obj.do_stuff()

# Way 3
try:
    obj.do_stuff()
except:
    print 'Do something else'

Which is the preferred method (and why)?