Функция repr() в Python

Функция repr() в Python: основы и примеры использования

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

Основы repr()

Функция repr() в Python принимает объект в качестве аргумента и возвращает строковое представление этого объекта, которое, в идеале, должно позволить воссоздать этот объект с помощью функции eval().

Пример использования repr():

num = 10
print(repr(num))

#10

В этом примере repr() возвращает строку ’10’, которую можно использовать для воссоздания числа 10 с помощью eval().

Использование repr() с пользовательскими классами

Когда вы определяете свой собственный класс, вы можете контролировать, что возвращает repr() для экземпляров этого класса, определив метод __repr__():

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f"Person({self.name!r}, {self.age})"

Теперь, если вы создадите экземпляр класса Person и примените к нему repr(), вы получите строку, которую можно использовать для воссоздания этого экземпляра:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

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

print(repr(person))

#Person('Alice', 25)

Здесь repr(person) возвращает строку «Person(‘Alice’, 25)», которую можно использовать для воссоздания экземпляра Person с помощью eval().

Разница между repr() и str()

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

Когда вы определяете свой собственный класс, вы можете определить методы __repr__() и __str__() для контроля над тем, что возвращают repr() и str() для экземпляров вашего класса.

Когда использовать repr()?

Функция repr() особенно полезна при отладке, так как она позволяет вам видеть точное строковое представление объекта. Это может быть полезно, если вы хотите понять, какой именно объект вызывает проблему.

Вы также можете использовать repr() для логирования, чтобы записывать точные данные об объектах, с которыми работает ваш код.

Заключение

Функция repr() в Python позволяет получить строковое представление объекта, которое может быть использовано для воссоздания этого объекта. Это особенно полезно для отладки и логирования. Когда вы определяете свой собственный класс, вы можете контролировать, что возвращает repr(), определив метод __repr__().

Содержание: