__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__ вместо него.