您在 Python 中创建的每个类都隐式地派生自 object
。要创建新的错误类,您必须从 BaseException
或其子类之一派生它(通常,Exception
用于此目的)。此自定义异常将成功通过 isinstance(MyException, object)
测试,因此它仍然是 object
。但我想知道,实施这种限制的原因是什么?为什么我们需要从 BaseException
或其后代派生而不是这样做:
class MyException:
pass
raise MyException()
答案 0 :(得分:1)
raise
需要一些特殊的 C 级属性才能正常工作(特别是这些 here)。
在纯 python 中将这些放入您的对象的唯一方法是子类化 BaseException
。因此,python 开发人员简单地决定每个可引发对象,即使在 C 模块中定义,也应该从 BaseException
继承以简化检查。