Чем отличаются str и repr
Функции `str()` и `repr()` используются для получения строкового представления объектов, но они служат разным целям и работают по-разному.Функция `str()`
Предназначена для получения "приятного" строкового представления объекта, которое может быть представлено пользователю. Она старается сделать строку более читабельной и понятной. Если метод `__str__()` не определен в классе объекта, использует метод `__repr__()` как запасной вариант.
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name}, возраст {self.age} лет"
person = Person("Иван", 30)
print(str(person)) # Вывод: Иван, возраст 30 лет
```
Функция `repr()`
Предназначена для получения официального строкового представления объекта, которое может быть использовано для воссоздания того же объекта при помощи интерпретатора. `repr()` должна быть максимально точной и содержать информацию о всех атрибутах объекта. Результат `repr()` часто используется для отладки и разработки, так как он дает больше деталей о объекте.
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person('{self.name}', {self.age})"
person = Person("Иван", 30)
print(repr(person)) # Вывод: Person('Иван', 30)
```
Основные отличия
- Цель: `str()` используется для удобочитаемого представления объекта, а `repr()` — для точного и однозначного представления, часто с целью отладки или журналирования.
- Вывод: `str()` старается быть читабельным; `repr()` — точным и полным, позволяя воссоздать объект при помощи его вывода в интерпретаторе Python.
`str()` делает описание объекта понятным и красивым для людей. `repr()` делает описание точным и полным, чтобы программисты могли понять все детали объекта или даже воссоздать объект по этому описанию.
May 22, 2024, easyoffer