__repr__和__str__有什么区别
时间: 2024-01-10 22:21:31 浏览: 78
__repr__和__str__是Python中两个特殊的方法,用于定制对象的字符串表示形式。它们之间的区别如下:
1. __repr__方法返回一个对象的“官方”字符串表示形式,通常用于开发人员调试和诊断。它应该是明确无误的,包含足够的信息以便于重新创建该对象。如果没有定义__str__方法,Python会使用__repr__方法作为默认的字符串表示形式。
2. __str__方法返回一个对象的“友好”字符串表示形式,通常用于用户界面和打印输出。它应该是可读的,但不一定是准确的或完整的。
简而言之,__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"Person: {self.name}, {self.age} years old"
person = Person("Alice", 25)
print(repr(person)) # 输出:Person(name='Alice', age=25)
print(str(person)) # 输出:Person: Alice, 25 years old
```
阅读全文