Как реализовать магический метод __str__ в Python?
В этом уроке вы узнаете, как использовать метод Python __str__ для создания строкового представления класса.
Что такое метод __str__ в Python?
Начнем с класса Person:
class Person: def __init__(self, first_name, last_name, age): self.first_name = first_name self.last_name = last_name self.age = age
Класс Person имеет три атрибута экземпляра, включая first_name, Last_name и age.
Следующий код создает новый экземпляр класса Person и отображает его:
person = Person('John', 'Doe', 25) print(person)
Выход:
<__main__.Person object at 0x0000023CA16D13A0>
Когда вы используете функцию print() для отображения экземпляра класса Person, функция print() показывает адрес памяти этого экземпляра.
Иногда полезно иметь строковое представление экземпляра класса. Чтобы настроить строковое представление экземпляра класса, класс должен реализовать магический метод __str__. Внутри Python автоматически вызывает метод __str__, когда экземпляр вызывает метод str().
Обратите внимание, что функция print() преобразует все аргументы, не являющиеся ключевыми словами, в строки, передавая их в функцию str() перед отображением строковых значений.
Ниже показано, как реализовать метод __str__ в классе Person:
class Person: def __init__(self, first_name, last_name, age): self.first_name = first_name self.last_name = last_name self.age = age def __str__(self): return f'Person({self.first_name},{self.last_name},{self.age})'
А когда вы используете функцию print() для распечатки экземпляра класса Person, Python вызывает метод __str__, определенный в классе Person. Например:
person = Person('John', 'Doe', 25) print(person)
Выход:
Person(John,Doe,25)