python中__repr__与__str__方法详解

 更新时间:2025年11月14日 08:25:47   作者:小小小小祥  
本文主要介绍了python中__repr__与__str__方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

__str__ __repr__ 是 Python 中两个非常重要的魔法方法,它们都用于定义对象的字符串表示,但各自的使用场景和目标有所不同。

1.__str__:面向用户的字符串表示

  • 目的:__str__ 主要用于为对象提供一个友好的、易于理解的字符串表示,通常是面向终端用户或者外部系统的输出。
  • 用途:当你使用 print() 函数或者 str() 函数时,Python 会调用对象的 __str__ 方法。它应该返回一个简洁、直观且易于阅读的字符串。

代码示例:

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __str__(self):
        return f"Point at ({self.x}, {self.y})"

p = Point(3, 4)
print(p)

代码输出:

Point at (3, 4)

2.__repr__:面向开发者的字符串表示

  • 目的:__repr__ 的主要目的是为开发者提供一种无歧义的、尽可能详细的字符串表示,以便于调试和开发。它应该尽量返回一个能够重新构建该对象的字符串(或至少能够描述该对象)。
  • 用途:__repr__ 通常用于调试、日志记录、交互式环境(如 Python shell),以及当你打印对象时,Python 会自动调用该方法。如果未定义 __str__ 方法,__repr__ 会被用作 print() 输出的后备方法。

代码示例:

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __repr__(self):
        return f"Point(x={self.x}, y={self.y})"

p = Point(3, 4)
print(repr(p))

代码输出:

Point(x=3, y=4)

3.__str__vs__repr__:区别

特性__str____repr__
目标面向终端用户,简洁、友好、易读面向开发者,详细、无歧义、可重建对象
输出格式通常为简单的字符串描述,易于理解返回尽可能完整的对象信息,通常包括类名和参数
用途主要用于 print()、str() 输出主要用于调试、交互式环境、日志记录
默认行为如果没有定义 __str__,Python 会调用 __repr__如果没有定义 __repr__,Python 会调用默认的 __repr__,该默认方法返回一个类似 <__main__.ClassName object at 0x000000> 的表示

4. 综合示例

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __str__(self):
        return f"Point at ({self.x}, {self.y})"

    def __repr__(self):
        return f"Point(x={self.x}, y={self.y})"

# 创建一个 Point 对象
p = Point(3, 4)

# 面向用户的字符串表示
print(str(p))  # Output: Point at (3, 4)

# 面向开发者的字符串表示
print(repr(p))  # Output: Point(x=3, y=4)

总结

  • __str__ 是用户友好的输出,返回一个易于理解的字符串
  • __repr__ 是开发者友好的输出,返回一个更详细的、能够重建对象的字符串
  • 如果 __str__ 没有定义,Python 会回退到使用 __repr__

到此这篇关于python中__repr__与__str__方法详解的文章就介绍到这了,更多相关python __repr__ __str__内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Python解析五大主流文档从PDF到EPUB的全攻略

    使用Python解析五大主流文档从PDF到EPUB的全攻略

    在日常的数据处理、内容分析和知识管理工作中,我们经常需要从各种格式的文档中提取信息,今天,我将为大家详细介绍如何用Python解析五种最常见的文档格式:PDF、Markdown、TXT、DOC和EPUB,需要的朋友可以参考下
    2026-01-01
  • conda安装GPU版pytorch默认却是cpu版本

    conda安装GPU版pytorch默认却是cpu版本

    本文主要介绍了遇到Conda安装PyTorch GPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-06-06
  • Python-pywin32库的使用高级操作方法

    Python-pywin32库的使用高级操作方法

    文章介绍了Python的pywin32库,该库允许访问Windows API并执行高级操作,对Python pywin32库使用方法感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • Python Pyecharts绘制桑基图分析用户行为路径

    Python Pyecharts绘制桑基图分析用户行为路径

    这篇文章主要为大家介绍了Python Pyecharts绘制桑基图分析用户行为路径,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • matplotlib bar()实现多组数据并列柱状图通用简便创建方法

    matplotlib bar()实现多组数据并列柱状图通用简便创建方法

    这篇文章主要介绍了matplotlib bar()实现多组数据并列柱状图通用简便创建方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的

    Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的

    这篇文章主要介绍了Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • python实现合并两个数组的方法

    python实现合并两个数组的方法

    这篇文章主要介绍了python实现合并两个数组的方法,实例分析了两种常用的合并数组的技巧,非常简单实用,需要的朋友可以参考下
    2015-05-05
  • Python实现模拟分割大文件及多线程处理的方法

    Python实现模拟分割大文件及多线程处理的方法

    这篇文章主要介绍了Python实现模拟分割大文件及多线程处理的方法,涉及Python文件读取、分割及多线程相关操作技巧,需要的朋友可以参考下
    2017-10-10
  • 使用Python的Flask框架来搭建第一个Web应用程序

    使用Python的Flask框架来搭建第一个Web应用程序

    Flask框架是一个以轻量级著称的Web开发框架,近两年来在Web领域获得了极高的人气,这里我们就来看如何使用Python的Flask框架来搭建第一个Web应用程序
    2016-06-06
  • Python元组Tuple常用函数详解

    Python元组Tuple常用函数详解

    Python元组Tuple使用小括号()包裹,元素之间使用逗号,间隔,元组与列表相似,但元组的元素不可变,本文就给大家详细介绍一下元组的常用函数以及基本操作,感兴趣的朋友可以参考阅读下
    2023-07-07

最新评论