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