python isinstance vs hasattr vs try / except: O que é melhor?
Estou tentando descobrir as vantagens e desvantagens entre diferentes abordagens para determinar se o objeto é ou nãoobj
você pode executar açãodo_stuff()
. Pelo que entendi, existem três maneiras de determinar se isso é possível:
# 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'
Qual é o método preferido (e por que)?