Метод | Описание |
---|---|
__str__() | Метод, который возвращает строку, представляющую объект в понятном для людей виде. |
__repr__() | Метод, который возвращает строку, представляющую объект так, чтобы ее можно было использовать для создания аналогичного объекта. |
- Метод repr(): данный метод возвращает строковое представление объекта, которое может быть использовано для его восстановления. Он вызывается автоматически при использовании функции repr() или встроенной функции str().
- Метод str(): данный метод возвращает строковое представление объекта, предназначенное для чтения человеком. В отличие от метода repr(), метод str() не позволяет восстановить объект.
- Метод format(): данный метод позволяет форматировать строку с использованием специальных символов, называемых заполнителями, для вставки значений объекта. Он используется в комбинации с фигурными скобками {} внутри строки.
Один из таких методов - __str__
. Он возвращает строковое представление объекта и используется, например, при вызове функции print
. Рассмотрим пример:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Person: {self.name}, {self.age} years old"
person = Person("Alice", 25)
print(person)
Кроме метода __str__
, существует также метод __repr__
. Этот метод возвращает строку, содержащую код, который можно использовать для создания точной копии объекта. Рассмотрим пример:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return f"Point({self.x}, {self.y})"
point = Point(3, 4)
print(point)
print(repr(point))
Метод __repr__
возвращает строку "Point(3, 4)". При вызове функции repr
с объектом point
также возвращается эта строка.
Самыми часто используемыми методами являются __str__
и __repr__
. Оба метода позволяют получить строковое представление объекта, но с некоторыми отличиями.
Метод | Синтаксис | Описание |
---|---|---|
__str__ | def __str__(self): | Возвращает строку, представляющую объект в удобочитаемом формате для человека. Этот метод используется, когда объект передается функции print() или преобразуется в строку с помощью функции str() . |
__repr__ | def __repr__(self): |
Важно отметить, что метод __repr__
должен возвращать строку, которая может быть исполнена в Python-коде, чтобы создать точную копию объекта. В противном случае, если объект будет передан в функцию eval()
, возможны непредсказуемые ошибки.
Метод __str__
отвечает за строковое представление объекта. Обычно он возвращает наглядное и понятное описание объекта. Это может быть, например, название, атрибуты или другая информация, которая помогает понять, что это за объект.
Метод __repr__
также отвечает за представление объекта в текстовом формате. Однако его задача заключается в том, чтобы возвращать форматированную строку, которая может использоваться для создания точной копии объекта. Это полезно, когда нужно сохранить состояние объекта или передать его в другую программу.
Эти методы могут быть определены в пользовательском классе, и тогда они будут автоматически вызываться при необходимости вывести объект. Если же методы не были определены, Python использует методы по умолчанию, которые просто возвращают обращение к экземпляру класса.
Метод __str__
Метод __str__
определяет, как объект класса будет выглядеть в виде строки при использовании функции str()
или при преобразовании объекта в строку с помощью операции str(object)
. Для этого метод должен вернуть строковое представление объекта.
class Person:
def __init__(self, name):
self.name = name
def __str__(self):
return f"Person: {self.name}"
person = Person("John Smith")
print(str(person)) # Output: Person: John Smith
Метод __repr__
Метод __repr__
определяет, как объект класса будет выглядеть при использовании функции repr()
или при преобразовании объекта в строку с помощью операции repr(object)
. В отличие от метода __str__
, метод __repr__
должен вернуть строку, которую можно использовать для создания точно такого же объекта. Обычно возвращается строка с выражением, таким как ClassName(arg1, arg2, ...)
.
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return f"Point({self.x}, {self.y})"
point = Point(3, 4)
print(repr(point)) # Output: Point(3, 4)