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

Python类中__repr__魔法方法无法返回实例参数的技术问询

问题排查与解决:__repr__魔法方法无法返回实例参数

你遇到的问题很典型——你的__repr__方法里的字符串没有使用字符串格式化语法,导致Python只是把包含{self.name}的文本原样返回,而没有解析这些变量的实际值。

修复后的代码

只需要把__repr__方法改成下面任意一种写法即可:

方案1:使用f-string(推荐,Python 3.6+支持)

def __repr__(self):
    return f"Item('{self.name}', {self.price}, {self.quantity})"

方案2:使用str.format()

def __repr__(self):
    return "Item('{}', {}, {})".format(self.name, self.price, self.quantity)

方案3:使用旧式%格式化

def __repr__(self):
    return "Item('%s', %s, %s)" % (self.name, self.price, self.quantity)

为什么原来的写法不行?

你原来的代码里,返回的是一个普通字符串:

return "Item('{self.name}', {self.price}, {self.quantity})"

Python不会自动识别并替换字符串里的{self.name}这类表达式,必须明确告诉它要进行格式化操作——上面的三种方案都是让Python把实例的属性值代入到字符串对应的位置上。

额外小提示

__repr__的设计目标是返回能重建该实例的合法Python代码,修复后的写法完全符合这个标准——你可以直接复制repr(item1)的输出,就能创建一个和item1属性完全一致的新实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 20:22:32