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 '''
标签:__,Point,self,repr,str,字符串 From: https://www.cnblogs.com/allenxx/p/17549137.html