__repr__() 和 __str__() 有什么区别?
时间: 2023-11-01 08:08:58 浏览: 45
__repr__() 和 __str__() 都是 Python 中的特殊方法,用于返回对象的字符串表示形式。它们的区别在于:
- __repr__() 返回的是对象的“官方”字符串表示形式,通常包含足够的信息以便于重建该对象。如果没有实现 __str__() 方法,则会使用 __repr__() 方法作为默认的字符串表示形式。
- __str__() 返回的是对象的“非正式”字符串表示形式,通常用于打印输出和显示给终端用户。
下面是一个简单的例子,演示了这两个方法的区别:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person(name='{self.name}', age={self.age})"
def __str__(self):
return f"{self.name} ({self.age} years old)"
p = Person("Alice", 25)
print(repr(p)) # Person(name='Alice', age=25)
print(str(p)) # Alice (25 years old)
```