Python 使用异常对象进行键入

Python 使用异常对象进行键入,python,Python,我想创建一个函数来检查传递的参数是异常还是它的子类之一。例如,我希望第二个is_异常函数调用也返回True def is_exception(obj): return type(obj) == Exception print is_exception(Exception('asdf')) => True print is_exception(EOFError('asdf')) => False 谢谢 您可以使用issubclass: >>> i

我想创建一个函数来检查传递的参数是异常还是它的子类之一。例如,我希望第二个is_异常函数调用也返回True

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

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

谢谢

您可以使用issubclass:

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

签名是“issubclass(A,B)”,如果A是B的子类,则返回True;如果A是B1、B2等的子类,则签名是“issubclass(A,(B1,B2…)”,则返回True。

您几乎肯定不想这样做。你的实际用例是什么?是
eoferor
subclass
Exception
还是
BaseException
?@jamylak:eoferor是Exception的一个子类,它是BaseException的一个子类。哦,我的坏消息,我忘了它是内置的:$DanieL:我有一个日志,我想在传递消息的同时传递一堆公共对象。记录器查看args并根据传入的内容执行不同的操作。我想我可以使用kwargs,但我希望函数调用尽可能少。类似这样:日志错误('发生错误',异常,用户,一些其他常见对象)谢谢!这正是我想要的。