【发布时间】:2014-01-28 06:44:24
【问题描述】:
我试图找出不同方法之间的权衡,以确定是否使用对象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'
首选方法是什么(为什么)?
【问题讨论】:
-
每件事都有时间。通常尝试/除外(或者甚至不
except,只是让异常渗透到调用堆栈中)是要走的路,但是每个规则都有例外(hohoho)。例如,字符串和列表共享许多方法,但您通常希望在递归调用中对它们做不同的事情。
标签: python exception-handling attributes isinstance