如何让自定义Python异常仅显示类名而非完整命名空间?
解决自定义异常显示完整命名空间的问题
要让自定义异常抛出时仅显示类名(如MyException: bad stuff happened),而非带完整模块路径的命名空间,可通过以下两种方式实现:
方法1:修改异常类的__module__属性
在自定义异常类中指定__module__为'builtins',与Python内置异常的模块标识保持一致,Python输出异常时就会只显示类名:
class MyException(Exception): __module__ = 'builtins' pass
方法2:重写异常类的__repr__方法
通过自定义__repr__方法,返回仅包含类名和异常消息的格式,覆盖默认的带模块路径的显示逻辑:
class MyException(Exception): def __repr__(self): return f"{self.__class__.__name__}: {self}"
如果需要str()输出也保持相同格式,可同时重写__str__方法,不过通常仅修改__repr__即可满足异常抛出时的显示需求。
内容的提问来源于stack exchange,提问作者stam
相关产品推荐
相关产品推荐

