魔法函数 __repr__() 和 __str__()的区别

复制代码
 1 '''
 2 __repr__() 和 __str__() 都是 Python 中的特殊方法,用于定义对象的字符串表示形式。它们之间的区别如下:
 3     1. __repr__(self):返回一个字符串,用于表示对象的“官方”字符串表示形式。这个字符串应该是可以用来重新创建对象的,并且应该尽可能准确和详细。
 4       一般来说,__repr__() 方法应该返回一个能够通过 eval(repr(obj)) 将字符串转换为等价的对象的表达式。
 5     2. __str__(self):返回一个字符串,用于表示对象的“友好”字符串表示形式。这个字符串主要用于显示给用户,应该易于阅读和理解。
 6       通常情况下,__str__() 方法应该返回一个更简洁、可读性高的字符串。
 7 '''
 8 
 9 
10 class Point:
11     def __init__(self, x, y):
12         self.x = x
13         self.y = y
14 
15     def __repr__(self):
16         return f"Point({self.x}, {self.y})"
17 
18     def __str__(self):
19         return f"({self.x}, {self.y})"
20 
21 
22 p = Point(3, 4)
23 print(repr(p))  # 输出:Point(3, 4)
24 print(str(p))  # 输出:(3, 4),注释掉__str__方法,输出: Point(3, 4)
25 '''
26 定义了一个 Point 类,并重载了 __repr__() 和 __str__() 方法。__repr__() 方法返回的字符串是 Point(3, 4),用于表示对象的“官方”字符串表示形式。
27 __str__() 方法返回的字符串是 (3, 4),用于表示对象的“友好”字符串表示形式。
28 
29 当我们使用 repr(p) 或 str(p) 打印对象时,实际上会自动调用相应的特殊方法,并输出其返回的字符串。
30 
31 需要注意的是,如果只实现了 __repr__() 方法而没有实现 __str__() 方法,那么在调用 str(obj) 的时候,Python 会使用 __repr__() 方法来代替。
32 '''
复制代码

 

posted @   Allen_Hao  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示