Чем отличаются 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