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

如何在Python的complex类级别重写str方法自定义复数字符串格式?

如何在Python的complex类级别重写str方法?

当然可以,直接修改Python内置complex类的__str__方法就行,这样所有复数实例调用str()或者被打印时都会使用你的自定义格式。

先把你的自定义函数适配成类方法的形式(类的__str__方法第一个参数是实例本身,也就是self):

def custom_complex_str(self):
    result = f"{self.real}"
    if self.imag < 0.0:
        result += " - "
    else:
        result += " + "
    result += f"{abs(self.imag)}i"
    return result

然后直接把这个函数赋值给complex.__str__:

complex.__str__ = custom_complex_str

测试一下效果:

z1 = 3 + 4j
print(z1)  # 输出: 3.0 + 4.0i
z2 = 2 - 5j
print(z2)  # 输出: 2.0 - 5.0i

要注意的点

  • 这种修改是全局生效的,整个Python运行环境里所有复数实例的字符串表现都会改变,要是你有其他依赖原生复数格式的代码,可能会出问题。
  • 如果之后想恢复原生的__str__方法,记得先备份再修改:
    original_complex_str = complex.__str__
    # 之后要恢复时执行
    complex.__str__ = original_complex_str
    
  • 另外,__repr__是生成对象“官方表示”的方法,要是你需要repr(z)也用自定义格式,用同样的方式修改complex.__repr__就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 17:24:56