python__repr__和__str__区别
时间: 2023-12-17 18:05:22 浏览: 23
__repr__和__str__都是Python中用于表示对象的方法,但是它们的作用不同。__repr__用于返回一个对象的“官方”字符串表示,而__str__用于返回一个对象的“非正式”或“友好”字符串表示。
__repr__方法返回的字符串应该是一个可以用来表示该对象的表达式,通常应该是一个可以用来创建该对象的字符串表达式。而__str__方法返回的字符串通常是一个更加友好和易读的字符串,用于打印或显示给终端用户。
以下是一个例子,展示了__repr__和__str__方法的区别:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return 'Person(name={}, age={})'.format(self.name, self.age)
def __str__(self):
return '{} - {}'.format(self.name, self.age)
p = Person('Alice', 25)
print(repr(p)) # 输出:Person(name=Alice, age=25)
print(str(p)) # 输出:Alice - 25
```
在上面的例子中,__repr__方法返回了一个可以用来创建该对象的字符串表达式,而__str__方法返回了一个更加友好和易读的字符串。