文章目录
目录
- 1.__str__:面向用户的字符串表示
- 2.__repr__:面向开发者的字符串表示
- 3.__str__vs__repr__:区别
- 4. 综合示例
- 总结
__str__ 和 __repr__ 是 Python 中两个非常重要的魔法方法,它们都用于定义对象的字符串表示,但各自的使用场景和目标有所不同。
- 目的:
__str__ 主要用于为对象提供一个友好的、易于理解的字符串表示,通常是面向终端用户或者外部系统的输出。
- 用途:当你使用 print() 函数或者 str() 函数时,Python 会调用对象的
__str__ 方法。它应该返回一个简洁、直观且易于阅读的字符串。
__str__ 主要用于为对象提供一个友好的、易于理解的字符串表示,通常是面向终端用户或者外部系统的输出。__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)
- 目的:
__repr__ 的主要目的是为开发者提供一种无歧义的、尽可能详细的字符串表示,以便于调试和开发。它应该尽量返回一个能够重新构建该对象的字符串(或至少能够描述该对象)。
- 用途:
__repr__ 通常用于调试、日志记录、交互式环境(如 Python shell),以及当你打印对象时,Python 会自动调用该方法。如果未定义 __str__ 方法,__repr__ 会被用作 print() 输出的后备方法。
__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)
| 特性 | __str__ | __repr__ |
|---|---|---|
| 目标 | 面向终端用户,简洁、友好、易读 | 面向开发者,详细、无歧义、可重建对象 |
| 输出格式 | 通常为简单的字符串描述,易于理解 | 返回尽可能完整的对象信息,通常包括类名和参数 |
| 用途 | 主要用于 print()、str() 输出 | 主要用于调试、交互式环境、日志记录 |
| 默认行为 | 如果没有定义 __str__,Python 会调用 __repr__ | 如果没有定义 __repr__,Python 会调用默认的 __repr__,该默认方法返回一个类似 <__main__.ClassName object at 0x000000> 的表示 |
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__
__str__ 是用户友好的输出,返回一个易于理解的字符串__repr__ 是开发者友好的输出,返回一个更详细的、能够重建对象的字符串__str__ 没有定义,Python 会回退到使用 __repr__到此这篇关于python中__repr__与__str__方法详解的文章就介绍到这了,更多相关python __repr__ __str__内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
您可能感兴趣的文章:
- Python中的魔法方法__repr__和__str__用法实例详解
- 一文让你彻底搞懂Python中__str__和__repr__
- Python 的 __str__ 和 __repr__ 方法对比
- 通过实例了解Python str()和repr()的区别
- Python中__repr__和__str__区别详解
- Python 基础教程之str和repr的详解
- python使用str & repr转换字符串
- 详解Python中__str__和__repr__方法的区别
- python str与repr的区别