python isinstance vs hasattr vs try / except: Co jest lepsze?
Próbuję znaleźć kompromis między różnymi podejściami do określania, czy obiekt ma być, czy nieobj
możesz wykonać akcjędo_stuff()
. Jak rozumiem, istnieją trzy sposoby określenia, czy jest to możliwe:
# 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'
Jaka jest preferowana metoda (i dlaczego)?