You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python自定义异常打印输出结果与预期不符问题咨询

运行结果

代码实际输出为 ex。

逻辑拆解

Python所有内置异常的打印输出,本质是调用异常类的__str__方法,而该方法的默认实现完全依赖实例的args属性:

  • 当args元组只有1个元素时,直接返回该元素的字符串形式
  • 当args有多个元素时,返回整个元组的字符串形式

你给出的自定义异常类的两行初始化代码作用如下:

  • Exception.__init__(self, msg+msg):调用父类Exception的构造方法,父类会自动把传入的'exex'赋值给self.args,此时self.args = ('exex',),如果没有后续修改,打印异常的输出就是exex
  • self.args=(msg,):手动覆盖重写了args属性,把父类设置的('exex',)替换为('ex',),这是决定最终输出的核心代码,完全不可忽略

验证方法

你可以注释掉self.args=(msg,)这行后重新运行,输出就会变为你最初预期的exex。

内容的提问来源于stack exchange,提问作者Harald

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:15:03