2012-04-23 10 views
0

渡されたargがExceptionかそのサブクラスのいずれかであるかどうかを調べる関数を作成したいとします。例として、2番目のis_exception関数呼び出しがTrueを返すようにしたいと思います。例外オブジェクトを使ったDucktyping

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

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

ありがとう!

+0

これを行うことはほとんどありません。あなたの実際のユースケースは何ですか? –

+0

'EOFError'は' Exception'や 'BaseException'のサブクラスですか? – jamylak

+0

@jamylak:EOFErrorは、BaseExceptionのサブクラスであるExceptionのサブクラスです。 –

答えて

1

あなたがissubclass使用することができます:

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

署名は、AがBのサブクラスであれば真を返します "issubclass(A、B)"、または「issubclass(A、(B1、B2です。 ..)) "AがB1、B2などのいずれかのサブクラスである場合にTrueを返します。

+0

ありがとう!ちょうど私が探していたもの。 –

関連する問題