Python 的开放性问题:Python 中的 `__str__` 和 `__repr__` 方法有什么区别?

简介: 【1月更文挑战第2天】

在Python中,__str____repr__是两个特殊方法,用于定义对象的字符串表示形式。它们之间有一些区别,主要体现在它们的用途和调用时机上。

  1. __str__方法:

    • 用途:__str__方法定义了对象的“用户友好”或“格式化”字符串表示形式。通常,这个方法被用于print()函数和str()函数。
    • 调用时机:当你使用print()函数或str()函数时,如果对象定义了__str__方法,那么它会被调用。

    例如:

    class MyClass:
        def __str__(self):
            return "This is a user-friendly string representation of the object."
    
    obj = MyClass()
    print(obj)  # 调用 __str__ 方法
    
  2. __repr__方法:

    • 用途:__repr__方法定义了对象的“官方”或“开发者友好”字符串表示形式,通常应该是一个可以用来重新创建对象的表达式。它用于repr()函数、交互式解释器中直接输入对象名字、以及在调试时显示对象。
    • 调用时机:如果对象没有定义__str__方法,或者__str__方法返回一个非字符串的对象,那么在调用print()函数或str()函数时,会调用__repr__方法。

    例如:

    class MyClass:
        def __repr__(self):
            return "MyClass()"
    
    obj = MyClass()
    print(obj)  # 调用 __repr__ 方法
    

通常情况下,建议实现__repr__方法,以确保对象在交互式环境和调试中能够提供有用的信息。如果希望对象在一般情况下也有友好的字符串表示,那么可以同时实现__str__方法。如果只实现了__repr__而没有实现__str__,则在调用print()函数时,会调用__repr__方法。

相关文章
|
1天前
|
JSON JavaScript 前端开发
6-19|Python数据传到JS的方法
6-19|Python数据传到JS的方法
|
1天前
|
大数据 Python
6-11|Python中保证两位小数的方法
6-11|Python中保证两位小数的方法
|
1天前
|
移动开发 Python Windows
python编程获取网页标题title的几种方法及效果对比(源代码)
python编程获取网页标题title的几种方法及效果对比(源代码)
|
1天前
|
Python
Python类中属性和方法区分3-8
Python类中属性和方法区分3-8
|
Python 容器
一文让你彻底搞懂 Python 中 __str__ 和 __repr__
我们都知道,Python 的内置函数 ​​repr()​​ ​能够把对象用字符串的形式表达出来,方便我们辨认。这就是“字符串表示形式”。​​repr()​​​ 就是通过​ ​__repr__​​ ​这个特殊方法来得到一个对象的字符串表示形式的。
Python----魔法函数__str__/__repr__的用法
Python----魔法函数__str__/__repr__的用法
102 0
|
Python 容器
一文让你彻底搞懂Python中__str__和__repr__?
一文让你彻底搞懂Python中__str__和__repr__?
|
1天前
|
存储 人工智能 数据挖掘
Python编程入门:从基础到实战
【9月更文挑战第26天】 在这篇文章中,我们将一起探索Python编程的奇妙世界。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息和技巧。我们将从Python的基本语法开始,然后逐步深入到更复杂的主题,如函数、类和模块。最后,我们将通过一个实际的项目来应用我们所学的知识。让我们一起开始这段Python编程之旅吧!