python isinstance против hasattr против try / кроме: что лучше?
Я пытаюсь выяснить компромиссы между различными подходами определения, с объектом или нетobj
Вы можете выполнить действиеdo_stuff()
, Как я понимаю, есть три способа определить, возможно ли это:
# 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'
Какой метод является предпочтительным (и почему)?