【问题标题】:How to check if class is exception class?如何检查类是否为异常类?
【发布时间】:2019-01-28 10:12:00
【问题描述】:

我定义了一个自定义异常:

>>> class MyException(Exception):
>>>     pass

我创建了一个异常实例:

>>> a = MyException()

我检查这是否是一个例外。正如所料,它是:

>>> isinstance(a, Exception)
True 

但是如何检查该类是否为异常类?

>>> myclass = MyException
>>> isinstance(myclass, Exception)
False

【问题讨论】:

    标签: python python-3.x exception


    【解决方案1】:

    您可以使用issubclass函数检查一个类是否继承自另一个类

    print issubclass(MyException, Exception)
    

    结果:

    True
    

    【讨论】:

    • 酷。我需要它来区分对象实例和异常的子类(用于单元测试),不幸的是issubclass 对非类对象失败。
    【解决方案2】:

    您可以尝试检查Exception 是否在__bases__ 之下:

    >>> my_class = MyException
    >>> Exception in my_class.__bases__
    True
    

    【讨论】:

    • 谢谢,有点老套
    猜你喜欢
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2014-08-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多