刘心向学(37),__repr__与__str__,对象字符串表示深入解析(刘向之心)

分享兴趣,传播快乐,增长见闻,留下美好!

亲爱的朋友们,欢迎来到 LearningYard 新学苑!今天,小编为大家带来一篇特别的文章:《刘心向学(37):__repr__ 与 __str__:深入理解对象的字符串表示》。

---

一、思维导图

二、引言

在 Python 编程语言中,当我们打印对象或将其转换为字符串时,系统会调用对象的 `__str__` 或 `__repr__` 方法。虽然这两者的功能看起来有些相似,但它们在设计理念和实际用途上有着显著的区别。

本文将带您深度剖析 `__str__` 和 `__repr__` 之间的差异,探讨它们的使用场景及默认行为,并通过多个示例,帮助您在实际开发中充分利用它们。

---

简单类比:

- `__str__` 是给普通用户看的

- `__repr__` 是给开发者或解释器看的

接下来,让我们通过一个简单的示例来理解它们的默认行为:

---

示例展示:

假设我们没有定义 `__str__` 和 `__repr__` 方法,那么输出会类似于:

```python

\u003c__main__.Person object at 0x00000123456789>

```

这就是默认的 `__repr__` 输出(如果 `__str__` 没有定义的话,它也会作为 `__str__` 的输出)。该输出仅仅显示了对象的类型和内存地址。

---

理想输出:

在理想情况下,`__repr__` 方法应返回一个有效的 Python 表达式,您可以将它直接复制粘贴到解释器中,从而重建该对象。举个例子:

```python

repr(b) 输出:\"Book(title='Python编程', author='Guido van Rossum')\"

```

如果类的构造函数支持这种格式,那么在调试时,您就能够更加轻松地重建对象,这对于调试来说是非常有帮助的。

---

除了 `__str__` 和 `__repr__`,还有 `__format__`:

Python 还提供了另一个魔法方法 `__format__`,它用于支持 `format()` 函数和 f-string 格式化输出。

---

使用方法:

`__str__` 和 `__repr__` 是 Python 中两个非常重要的魔法方法,用来控制对象的字符串表示。虽然它们的功能相似,但在应用目标、设计理念以及使用场景上有所不同。

合理实现这两个方法,不仅能提升类的可读性和调试效率,还能增强代码的鲁棒性和用户体验。无论您是在开发面向用户的程序,还是在构建底层库或框架,理解并灵活运用 `__str__` 和 `__repr__` 都是一项不可或缺的技能。

---

今天的分享就到此为止。如果您对本文有任何独到的见解或想法,欢迎留言给我们,让我们明天再相见。祝愿大家今天过得愉快,生活充满阳光!

---

参考资料:

- 『通义千问』

- Beazley, D., & Jones, B. K. (2019). Python Cookbook (3rd ed.). O'Reilly Media.

- Hettinger, R. (2019). Transforming Code into Beautiful, Idiomatic Python. PyCon US.

本文由 LearningYard 新学苑整理发出,如有侵权,请在后台留言沟通!

---

排版: Song

审核: Qiu

特别声明:[刘心向学(37),__repr__与__str__,对象字符串表示深入解析(刘向之心)] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

刘强东今年再给光明村老乡送手机今年每家一部大屏AI手机(刘强东没了)

此举延续了去年以手机作为年礼的传统,并在以往手机产品的基础上进一步升级,即从『智能手机』迭代为大屏AI手机,更侧重于智能交互与便捷使用的体验。 根据“京东黑板报”消息显示,今年京东还将为光明村打造一场“村晚”,并…

刘强东今年再给光明村老乡送手机今年每家一部大屏AI手机(刘强东没了)

叶一茜带女儿簪花,17岁森碟气质温婉,下巴后缩改善,多亏了网友(叶一茜女儿几岁)

这并不是因为她受到了外界的苛责,而是因为公众普遍认为她在原生家庭中似乎有些许失衡,尤其是在家庭资源与情感的分配上,弟弟似乎理所当然地获得了更多的关注和重视。这一现象也侧面反映出一个现实问题:在日常的家庭生活中…

叶一茜带女儿簪花,17岁森碟气质温婉,下巴后缩改善,多亏了网友(叶一茜女儿几岁)

TS520模具钢以其优异的耐腐蚀性和高抛光性能著称(t18模具专用钢)

实验数据显示,在相对湿度80%的环境中,未防护的TS520试样72小时后出现0.03mm100mm的尺寸波动。某精密模具厂曾记录案例:厚度差异超过50mm的TS520模块在露天仓库存放五天后,分型面出现0.…

TS520模具钢以其优异的耐腐蚀性和高抛光性能著称(t18模具专用钢)

中国银河:AI驱动『半导体』周期上行,国产化进程加速(中国银河是什么意思)

本周沪深300涨跌幅为0.08%,电子板块涨跌幅为-2.51%,其中『半导体』行业涨跌幅为-0.90%。2025年全年营收为176.82美元💵,同比增长13%。 『半导体』设备方面,本周,ASML公布2025年财报,…

中国银河:AI驱动『半导体』周期上行,国产化进程加速(中国银河是什么意思)

皇帝夸甄嬛绝世容貌无人可比时,谁注意到曹贵人手上的小动作了?(甄嬛劝皇上)

它让我们看到了曹贵人的脆弱和不安,也让我们看到了她在面对皇帝的夸赞时的无奈和挣扎。 总的来说,《甄嬛传》是一部非常成功的电视剧,它通过细腻的描绘和真实的人物形象,让我们看到了宫廷中的尔虞我诈和人性的复杂。曹贵…

皇帝夸甄嬛绝世容貌无人可比时,谁注意到曹贵人手上的小动作了?(甄嬛劝皇上)