Методы вывода объекта класса в Python — примеры и объяснение

Метод __str__() очень полезен, когда вам нужно определить строковое представление объекта класса. Обычно он возвращает простое текстовое представление объекта, которое может быть полезно для отладки или отображения объекта пользователю. Например, если у вас есть класс «Студент», метод __str__() может возвращать строку вида «Студент: Имя Фамилия».

Метод __repr__() похож на метод __str__(), но предназначен для представления объекта, которое должно быть понятным и полным. Он возвращает строку, которая может быть использована для восстановления объекта. Метод __repr__() обычно используется для отладки и разработки, и его результатом может быть что-то вроде «Студент(Имя=’Имя’, Фамилия=’Фамилия’)».

В следующем примере показано, как определить метод __str__ в классе Person:


class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Имя: {self.name}, Возраст: {self.age}"


person = Person("Иван", 25)
print(person)

В результате выполнения этого кода будет выведено:


Имя: Иван, Возраст: 25

Иногда бывает полезно также определить метод __repr__ в классе, который возвращает строковое представление объекта, которое может быть использовано для его полной идентификации. Этот метод вызывается функцией repr.

Метод __str__ является одним из основных методов для поддержки «соглашения о строковом представлении объектов» в Python, и его использование может значительно улучшить читаемость и отладку вашего кода.

Метод __repr__ возвращает строку, которая должна быть валидным Python-кодом, представляющим объект. Она часто используется для воссоздания объекта при его десериализации или для отладки программы.

Пример использования метода __repr__:


class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person(name={self.name}, age={self.age})"
person = Person("Alice", 25)

Примеры использования методов __str__ и __repr__ для разных классов

Ниже приведены примеры использования этих методов для различных классов:

  1. Класс Point:

    class Point:
    def __init__(self, x, y):
    self.x = x
    self.y = y
    def __str__(self):
    return f"Point({self.x}, {self.y})"
    def __repr__(self):
    return f"Point({self.x}, {self.y})"

    При вызове метода __str__ будет возвращаться строка вида «Point(x, y)», где x и y — значения координат точки. Метод __repr__ будет возвращать строку с тем же форматом.

  2. Класс Employee:

    class Employee:
    def __init__(self, name, salary):
    self.name = name
    self.salary = salary
    def __str__(self):
    return f"Employee: {self.name}"
    def __repr__(self):
    return f"Employee: {self.name}, Salary: {self.salary}"

    Метод __str__ будет возвращать строку вида «Employee: name», где name — имя сотрудника. Метод __repr__ будет возвращать строку с форматом «Employee: name, Salary: salary», где name — имя сотрудника, salary — его зарплата.

  3. Класс Car:

    class Car:
    def __init__(self, make, model, year):
    self.make = make
    self.model = model
    self.year = year
    def __str__(self):
    return f"{self.make} {self.model} ({self.year})"
    def __repr__(self):
    return f"Car: {self.make} {self.model} ({self.year})"

    Метод __str__ будет возвращать строку вида «make model (year)», где make — марка автомобиля, model — модель, year — год выпуска. Метод __repr__ будет возвращать строку с форматом «Car: make model (year)».

Оцените статью