Функция repr() в Python, описание объекта
Функция repr() вернет строку, содержащую печатаемое формальное представление объекта.
Для многих типов функция возвращает строку, которая при передаче в eval() может произвести объект с тем же значением, что и исходный. В других случаях представление является строкой, обрамлённой угловыми скобками (< и >), содержащей название типа и некую дополнительную информацию, часто название объекта и его адрес в памяти.
Чтобы определить значение, возвращаемое функцией для пользовательского типа следует реализовать для этого типа специализированный метод __repr__ .
Примеры получения описания объекта.
class Person: name = 'Mike' x = Person() print(repr(x)) # # Определим метод __repr__ class Person: name = 'Mike' def __repr__(self): return repr(self.name) x = Person() print(repr(x)) # 'Mike'
>>> x = [1, 2, 3, 4, 5, 6, 7] >>> repr(x) # '[1, 2, 3, 4, 5, 6, 7]' >>> repr('Hello') # "'Hello'" >>> x = ('a', 'b', 'c', 'd') >>> repr(x) # "('a', 'b', 'c', 'd')" >>> x = range(5) >>> repr(x) # 'range(0, 5)' >>>
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Функция abs(), абсолютное значение числа
- Функция all(), все элементы True
- Функция any(), хотя бы один элемент True
- Функция ascii(), преобразует строку в ASCII
- Функция bin(), число в двоичную строку
- Класс bool(), логическое значение объекта
- Функция breakpoint(), отладчик кода
- Класс bytearray(), преобразует в массив байтов
- Класс bytes(), преобразует в строку байтов
- Функция callable(), проверяет можно ли вызвать объект
- Функция chr(), число в символ Юникода
- Класс classmethod, делает функцию методом класса
- Функция compile() компилирует блок кода Python
- Класс complex(), преобразует в комплексное число
- Функция delattr(), удаляет атрибут объекта
- Класс dict() создает словарь
- Функция dir(), все атрибуты объекта
- Функция divmod(), делит числа с остатком
- Функция enumerate(), счетчик элементов последовательности
- Функция eval(), выполняет строку-выражение с кодом
- Функция exec(), выполняет блок кода
- Функция filter(), фильтрует список по условию
- Класс float(), преобразует в вещественное число
- Функция format(), форматирует значение переменной
- Класс frozenset(), преобразует в неизменяемое множество
- Функция getattr(), значение атрибута по имени
- Функция globals(), переменные глобальной области
- Функция hasattr(), наличие атрибута объекта
- Функция hash(), хэш-значение объекта
- Функция help(), справка по любому объекту
- Функция hex(), число в шестнадцатеричную строку
- Функция id(), идентификатор объекта
- Функция input(), ввод данных с клавиатуры
- Класс int(), преобразует в тип int
- Функция isinstance(), принадлежность экземпляра к классу
- Функция issubclass(), проверяет наследование класса
- Функция iter(), создает итератор
- Функция len(), количество элементов объекта
- Класс list(), преобразовывает в список
- Функция locals(), переменные локальной области
- Функция map(), обработка последовательности без цикла
- Функция max(), максимальное значение элемента
- Класс memoryview(), ссылка на буфер обмена
- Функция min(), минимальное значение элемента
- Функция next(), следующий элемент итератора
- Класс object(), возвращает безликий объект
- Функция oct(), число в восьмеричную строку
- Функция open(), открывает файл на чтение/запись
- Функция ord(), число символа Unicode
- Функция pow(), возводит число в степень
- Функция print(), печатает объект
- Класс property(), метод класса как свойство
- Класс range(), генерирует арифметические последовательности
- Функция repr(), описание объекта
- Функция reversed(), разворачивает последовательность
- Функция round(), округляет число
- Класс set(), создает или преобразовывает в множество
- Функция setattr(), создает атрибут объекта
- Класс slice(), шаблон среза
- Функция sorted(), выполняет сортировку
- Декоратор staticmethod(), метод класса в статический метод
- Класс str(), преобразует объект в строку
- Функция sum(), сумма последовательности
- Функция super(), доступ к унаследованным методам
- Класс tuple(), создает или преобразует в кортеж
- Класс type(), возвращает тип объекта
- Функция vars(), словарь переменных объекта
- Функция zip(), объединить элементы в список кортежей
- Функция __import__(), находит и импортирует модуль
- Функция aiter(), создает асинхронный итератор
- Функция anext(), следующий элемент асинхронного итератора
repr(object)
Возвращает формальное строковое представление указанного объекта.
Параметры ¶
Функция repr() принимает один параметр:
- obj : Объект для которого требуется получить формальное строковое представление. Для многих типов функция возвращает строку, которая при передаче в eval() может произвести объект с тем же значением, что и исходный.
В других случаях представление является строкой, обрамлённой угловыми скобками (< и >), содержащей название типа и некую дополнительную информацию, часто — название объекта и его адрес в памяти.
Возвращаемое значение ¶
- Функция repr() возвращает формальное строковое представление указанного объекта.
Примеры ¶
class Animal(): pass repr(Animal()) # repr('cat-кот') # 'cat-кот'
Python с нуля. Освойте с Виртуальным ИИ-помощником!
Теоретические уроки и практические задачи
Пишите и проверяйте код прямо в браузере
Виртуальный ИИ-помощник поможет в любое время дня и ночи
Сообщество учеников для взаимопомощи и обмена опытом
200 000+ зарегистрированных участников. Присоединяйтесь!
Попробовать бесплатно
©2023 Letpy
Мы используем файлы cookie
Наш сайт использует файлы cookie для улучшения пользовательского опыта, сбора статистики и обеспечения доступа к обучающим материалам. Мы также передаем информацию об использовании вами нашего сайт партерам по социальным сетям, рекламе и аналитике. В свою очередь, наши партнеры могут объединять ее с другой предоставленной вами информацией, или с информацией, которую они собрали в результате использования вами их услуг.
Метод __repr__ в Python
Метод __repr__ в Python выдает текстовое или строковое представление сущности или объекта. Этот процесс вызывается всякий раз при вызове метода repr() для какой-то сущности. Можно сказать, что методы repr() и __repr__ взаимозаменяемы.
Функция __str__ в Python делает то же самое, но ее поведение всё же немного отличается. Она предназначена для создания удобочитаемой версии, полезной для отслеживания или отображения информации об объекте. А метод __repr__ предназначен для предоставления «официального» текстового образа объекта, который можно использовать для воссоздания этого объекта.
В этой статье мы на примерах разберем работу методов __repr__ и __str__ . Итак, давайте начнем!
Пример 1
Откройте среду разработки для Python в своей системе. Сначала мы рассмотрим простой метод repr() .
Начнем с инициализации строковой переменной, содержащей предложение в качестве значения. Функция print() используется для вывода на экран строкового значения переменной string . Для получения именно строкового значения мы воспользовались методом repr() , которому передали string в качестве аргумента.
Далее мы применили функцию repr() к математическому выражению и попробовали вывести результат через ту же функцию print() . Что ж, давайте теперь посмотрим на то, что у нас получилось:
string = 'Hy! I am John' print (repr(string)) print (repr(5.0/11.0)) # Output: # 'Hy! I am John' # 0.45454545454545453
Из полученных данных видно, что метод repr() показывает строкове представление как строки, так и результата математического выражения.
Пример 2
Давайте более подробно рассмотрим функции repr() и str() , чтобы увидеть разницу между ними. На этот раз мы применим эти методы строкового представления к функциям даты и времени.
Чтобы получить дату и время в нашем коде, мы сначала импортируем модуль DateTime с помощью ключевого слова import . Чтобы получить текущую дату и время, мы воспользуемся функцией now() с классом datetime . Также мы сохраним текущую метку времени в переменной td .
Две функции print() используются для вывода текущей даты и времени в строковом формате с использованием функций __str__() и __repr__() для объекта переменной td .
Давайте посмотрим, что у нас получилось:
import datetime td = datetime.datetime.now() print(td.__str__()) print(td.__repr__()) # Output: # 2022-01-26 08:17:46.276609 # datetime.datetime(2022, 1, 26, 8, 17, 46, 276609)
При запуске этого кода мы получили два разных строковых результата. Первый результат генерируется методом __str__ и вполне очевиден. В то время как другой генерируется с использованием метода __repr__ , и нам его довольно сложно понять.
Пример 3
И последний пример. Воспользуемся определяемым пользователем классом Test . Этот класс определяет и реализует функцию-конструктор __init__() для сохранения имени name и зарплаты salary в двух разных переменных, v1 и v2 соответственно.
Объект с именем val создается для передачи двух значений переменных name и salary в конструктор функции. Создание объекта val вызывает автоматический запуск конструктора класса Test .
Методы __str__ и __repr__ вызываются с использованием объекта val по отдельности и выводят результаты. Обе функции ничего не получили, так как объект val был только что создан. Он может реагировать не так, как мы бы хотели. Давайте проверим это:
class Test: def __init__(self, name, salary): self.v1 = name self.v2 = salary val = Test(‘John’, 50000) print(val.__str__()) print(val.__repr__()) # Output: # #
Здесь выполнение обеих функций по умолчанию совершенно бесполезно. Теперь давайте реализуем обе функции.
Итак, после конструктора __init__() внутри класса мы по отдельности реализовали оба метода __str__() и __repr__() , которые возвращают текст в строковом формате. Они также возвращают значения, присвоенные конструктору, вызывающему объект val . Давайте запустим обновленный код и посмотрим на результат:
class Test: def __init__(self, name, salary): self.v1 = name self.v2 = salary def __str__(self): return f'User name is and his/her salary is ' def __repr__(self): return f'User(name=, salary=)' val = Test('John', 50000) print(val.__str__()) print(val.__repr__()) # Output: # User name is John and his/her salary is 50000 # User(name=John, salary=50000)
Первый вывод вызван методом __str__ и вполне понятен. Другой вывод понятен, но не так хорошо, как вывод функции __str__ .
Заключение
Эта статья посвящена использованию метода __repr__ в Python. Мы также обсудили метод __str__ , используемый в этой статье для показа различий между этими двумя функциями. Думаем, это позволило вам лучше понять метод __repr__ .
Мы очень надеемся, что данная статья была вам полезна! Успехов в написании кода!
repr
Для многих типов функция возвращает строку, которая при передаче в eval() может произвести объект с тем же значением, что и исходный.
В других случаях представление является строкой, обрамлённой угловыми скобками (< и >), содержащей название типа и некую дополнительную информацию, часто — название объекта и его адрес в памяти.
class Animal(): pass
repr(Animal()) #
repr('cat-кот') # 'cat-кот'
На заметку
Чтобы определить значение, возвращаемое функцией для пользовательского типа следует реализовать для этого типа специализированный метод __repr__.