2012-04-23 64 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