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

类实例的表示不符合预期:调用类方法创建实例未得到预期输出

解决Python类实例自定义字符串表示的问题

嗨,这个问题我太熟悉了!你之所以看不到预期的Point(0, 0)输出,是因为Python的类默认没有为实例提供友好的字符串展示方式——默认的__repr__方法只会输出类似<__main__.Point object at 0x...>这样的内存地址信息,完全不是你想要的格式。

解决方法很简单,只需要给你的Point类添加一个__repr__魔法方法就行:

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    
    @classmethod
    def zero(cls):
        return cls(0, 0)
    
    def __repr__(self):
        # 这个方法负责定义实例的"官方"字符串表示,尽量还原创建实例的代码
        return f"Point({self.x}, {self.y})"

point = Point.zero()
print(point)  # 现在会输出:Point(0, 0)

小补充:

  • __repr__是给开发者看的,按照Python的最佳实践,它的返回值应该是可以直接用来重建该实例的代码,所以我们用f-string把x和y的值拼进去,完美符合要求。
  • 如果还需要给普通用户展示更易懂的格式,可以额外添加__str__方法,比如:
    def __str__(self):
        return f"坐标点:({self.x}, {self.y})"
    
    这时候print(point)会用__str__的输出,而在交互式命令行里直接输入point会显示__repr__的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 16:07:41