2012-04-23 31 views
0

我想创建一个函数,可以检查传递的参数是否是一个Exception或它的一个子类。作为一个例子,我想第二个is_exception函数调用也返回True。鸭与异常对象

def is_exception(obj): 
    return type(obj) == Exception 

print is_exception(Exception('asdf')) => True 
print is_exception(EOFError('asdf')) => False 

谢谢!

+0

你几乎肯定不想这样做。你的实际用例是什么? – 2012-04-23 08:07:17

+0

'EOFError'子类是Exception还是'BaseException'? – jamylak 2012-04-23 08:25:41

+0

@jamylak:EOFError是Exception的子类,它是BaseException的一个子类。 – 2012-04-23 08:34:47

回答

1

可以使用issubclass:

>>> issubclass(EOFError,Exception) 
True 
>>> issubclass(EOFError,EOFerror) 
True 

签名是 “issubclass(A,B)”,这将返回真,如果A是B的子类,或“issubclass(A,(B1,B2。 ..))“如果A是B1,B2等中的任何一个的子类,它将返回True。

+0

谢谢!正是我在找的东西。 – 2012-04-23 09:04:28