Метод __str__ в ООП в Python
Первый специальный метод, который мы
изучим, называется __str__. Он
вызывается при попытке получить строковое
представление объекта. Давайте разберемся, что
это значит. Пусть у нас дан вот такой класс
User:
class User:
def __init__(self, name, age):
self.__name = name
self.__age = age
def get_name(self):
return self.__name
def get_age(self):
return self.__age
Давайте создадим объект этого класса:
user = User('john', 25)
А теперь попытаемся вывести созданный объект
через print:
user = User('john', 25)
print(user)
Попытка сделать вывод объекта через print
и есть преобразование к строке. В данном
случае Python покажет служебный текст
с адресом объекта в памяти.
Для того, чтобы вывод был понятным, мы должны
в явном виде сказать Python, что делать при
попытке преобразовать объект в строку. Для
этого и существует специальный метод
__str__.
Если в коде нашего класса сделать такой метод,
то результат этого метода (то есть то, что
он вернет через return) и будет строковым
представлением объекта.
Пусть мы хотим, чтобы при попытке вывести
объект через print, выводилось имя
юзера. Значит сделаем метод __str__
и вернем в нем значение свойства name:
class User:
def __init__(self, name, age):
self.__name = name
self.__age = age
# Реализуем указанный метод:
def __str__(self):
return self.__name
def get_name(self):
return self.__name
def get_age(self):
return self.__age
Проверим:
user = User('john', 25)
print(user) # выведет 'john' - все работает!
Сделайте класс User, в котором будут
свойства name и surn.
Сделайте так, чтобы при
выводе объекта через print на экран
выводилась строка с именем и фамилий пользователя.