Что такое специальный метод `__str__`?

Специальный метод __str__ в Python используется для предоставления "человеко-читаемого" строкового представления объекта. Он вызывается функциями str() и print(). Если метод __str__ не определен, используется представление, возвращаемое методом __repr__.

__str__ - это специальный (или магический) метод в Python, который определяет, как объект класса должен быть представлен в виде строки.

Он вызывается, когда вы используете функцию str() для объекта, или когда объект неявно преобразуется в строку, например, при использовании функции print().

Основное назначение __str__ - предоставить человеко-читаемое представление объекта. Это представление должно быть полезным для конечного пользователя, например, содержать важные атрибуты объекта в понятном формате.

Если метод __str__ не определен в классе, Python использует реализацию по умолчанию, унаследованную от класса object, которая возвращает строковое представление объекта, включающее имя класса и адрес памяти. Как правило, это не очень информативно для пользователя.

Пример:


class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"Person(name='{self.name}', age={self.age})"

person = Person("Alice", 30)
print(str(person))  # Выведет: Person(name='Alice', age=30)
print(person)       # Выведет: Person(name='Alice', age=30) - print() использует str() неявно
  

Важно: Метод __str__ должен возвращать строку. Если он возвращает что-то другое, будет вызвано исключение TypeError.

Отличие от __repr__: Хотя оба метода используются для строкового представления объекта, __str__ предназначен для человеко-читаемого представления, а __repr__ - для однозначного и недвусмысленного представления, которое может быть использовано для восстановления объекта (например, для отладки). Если __str__ не определен, Python использует __repr__ вместо него.

0