魔法函数 __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 @ 2023-07-12 23:04  Allen_Hao  阅读(16)  评论(0编辑  收藏  举报