python中类的特殊方法repr和str
时间: 2023-06-13 12:02:48 浏览: 81
08-python--writing-classes-特殊方法-属性
在Python中,类的特殊方法 `__repr__()` 和 `__str__()` 分别用于返回对象的“官方”字符串表示和“非正式”字符串表示。
`__repr__()` 方法通常返回一个字符串,该字符串表示对象的构造方式和状态。它应该是一个能够被 `eval()` 函数解释的表达式,用于重新创建同一个对象。如果没有实现 `__str__()` 方法,则调用 `__repr__()` 方法来返回一个对象的字符串表示。
`__str__()` 方法则返回一个对象的“友好”字符串表示,用于显示给用户。如果没有实现该方法,则默认调用 `__repr__()` 方法。
下面是一个简单的示例:
```python
class Car:
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
def __repr__(self):
return f"Car('{self.make}', '{self.model}', {self.year})"
def __str__(self):
return f"{self.make} {self.model} ({self.year})"
```
在上面的代码中,`__repr__()` 方法返回了一个字符串,用于表示对象的构造方式和状态。`__str__()` 方法返回了一个“友好”的字符串表示,用于显示给用户。
下面是一个示例,演示如何使用这些方法:
```python
car = Car("Toyota", "Camry", 2022)
# 调用 __repr__() 方法
print(repr(car)) # 输出:Car('Toyota', 'Camry', 2022)
# 调用 __str__() 方法
print(str(car)) # 输出:Toyota Camry (2022)
```
在上面的示例中,`repr(car)` 返回了一个字符串,表示对象的构造方式和状态。`str(car)` 返回了一个“友好”的字符串表示,用于显示给用户。
阅读全文