Пропустить до содержимого

Как использовать метод __str__ в Python?

[

Как и когда использовать .str() - Python Start Here Learn Python Python Tutorials

В этом уроке вы узнаете один из способов преобразования объектов Python в строки с помощью метода .str(). Вы также узнаете, что означает .str() и научитесь использовать его в классе Python:

class Car:
def __init__(self, color, mileage):
self.color = color
self.mileage = mileage
def __str__(self):
return 'Машина цвета {self.color}'.format(self=self)

Окей. В этом простом примере я взял класс Car и добавил в него метод .str(). Dunder-методы - это методы, которые начинаются с двойного подчеркивания ( __ ). Их также называют магическими методами, хотя многим людям это не нравится, потому что они на самом деле не должны быть волшебными. Они просто являются конвенцией в Python. Подчеркивание, или двойное подчеркивание ( __ ), отмечает их как основные вещи в Python. Классы, на самом деле, не должны определять свои собственные dunder-методы, потому что это может конфликтовать с будущими функциями Python.

my_car = Car("красная", 10000)
print(my_car)

Когда я печатаю объект Car, я получаю строку “Машина цвета красная” вместо предыдущей строки с памятью. Однако, когда я визуально осматриваю этот объект, я все еще получаю адрес памяти в предыдущем результате.

str(my_car)

Если вы хотите принудительно преобразовать объект в строку, вы можете использовать встроенную функцию str(). Она внутренне вызывает метод .str() и возвращает правильный результат. Это также относится к функции print(), которая делает то же самое. Использование str() в комбинации с format-строкой тоже даст вам правильный результат.

Если вы добавите метод .str(), то это поможет вам контролировать, как ваш объект представлен в виде строки. Это Python-способ сделать это, что называется голым граалем. Тем не менее, результат осмотра объекта my_car в консоли остается тем же самым.

Таким образом, существуют разные способы преобразования ваших объектов в строки. Первый изученный нами - это dunder-метод .str(). Второй - dunder-метод .repr(). Давайте поговорим о том, что делает .repr() и чем он отличается от .str().