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

刘心向学(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__,对象字符串表示深入解析(刘向之心)] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

千禧辣妹的风吹到潮玩界,这黑皮款“Labubu祖师奶”爆火(千禧辣妹服装)

深受网友喜爱的黑皮Kitty,最初其是三丽鸥为夏威夷市场设计的旅游纪念品,设定源于Kitty在夏威夷的度假形象——在海岛阳光下晒出了健康的黑皮肤。 因此,HelloKitty在2025年不仅有了小麦肤色,还…

千禧辣妹的风吹到潮玩界,这黑皮款“Labubu祖师奶”爆火(千禧辣妹服装)

凯士CAS传感器SB-20Kg(凯米斯传感器)

金属材料来源丰富,并具有优良的使用性能和加工性能,是机械工程中应用最普遍的材料,常用以制造机械设备、工具、模具,并广泛应用于工程结构中。钢分为碳素钢(简称碳钢)和合金两大类。 碳钢是指含碳量小于2.11%…

凯士CAS传感器SB-20Kg(凯米斯传感器)

白马山失联5人均已遇难 搜救行动艰难完成(白马山风景区)

8月3日,广东惠东县应急管理局发布情况通报:8月1日20时22分许,一名群众报警称,与其一同到惠东县白盆珠镇白马村白马山游玩的5名人员被水冲走失联。接警后,惠东县应急、公安、消防及白盆珠镇政府等部门组织专业救援力量展开搜救

白马山失联5人均已遇难 搜救行动艰难完成(白马山风景区)

国家疾控局局长带队赶赴广东佛山 指导基孔肯雅热疫情防控

国家卫生健康委副主任、国家疾控局局长沈洪兵于8月2日前往佛山,指导基孔肯雅热疫情防控工作。国家疾控局副局长孙阳及佛山市委书记唐屹峰一同参与了此次活动

国家疾控局局长带队赶赴广东佛山 指导基孔肯雅热疫情防控

OpenAI IMO金牌团队揭秘:三人小队如何突击造出“懂拒绝”的AI(imo金牌去向)

大型语言模型在IMO中摘金,不仅标志着AI数学能力的飞跃,更展现了其在应对复杂、难以验证任务时的技术进步。在IMO竞赛中,模型面对传统上最为困难的第三题和第六题时,选择了对第六题“不作答”。 Cheryl证…

OpenAI IMO金牌团队揭秘:三人小队如何突击造出“懂拒绝”的AI(imo金牌去向)