Spec-Zone.ru › Python 2.7

repr — Альтернативная реализация repr()

Примечание

Модуль repr был переименован в reprlib в Python 3. Инструмент 2to3 автоматически адаптирует импорты при преобразовании ваших исходных файлов в Python 3.

Исходный код: Lib/repr.py

Модуль repr предоставляет средства для создания представлений объектов с ограничениями на размер результирующих строк. Это используется в отладчике Python и может быть полезным в других контекстах.

Этот модуль предоставляет класс, экземпляр и функцию:

class repr.Repr

Класс, предоставляющий функции форматирования, полезные при реализации функций, аналогичных встроенной функции repr(); ограничения размера для различных типов объектов добавлены для предотвращения генерации чрезмерно длинных представлений.

repr.aRepr

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

repr.repr(obj)

Это метод repr() объекта aRepr. Он возвращает строку, аналогичную той, что возвращает встроенная функция с тем же именем, но с ограничениями на большинство размеров.

1. Объекты Repr

Repr экземпляры предоставляют несколько атрибутов, которые могут быть использованы для установления ограничений размера представлений различных типов объектов, и методы, которые форматируют конкретные типы объектов.

Repr.maxlevel

Ограничение глубины при создании рекурсивных представлений. По умолчанию 6.

Repr.maxdict
Repr.maxlist
Repr.maxtuple
Repr.maxset
Repr.maxfrozenset
Repr.maxdeque
Repr.maxarray

Ограничения на количество элементов, представленных для указанного типа объекта. По умолчанию 4 для maxdict, 5 для maxarray и 6 для других.

Введено в версии 2.4: maxset, maxfrozenset и set.

Repr.maxlong

Максимальное количество символов в представлении для целого числа большой точности. Цифры из середины отбрасываются. По умолчанию 40.

Repr.maxstring

Ограничение на количество символов в представлении строки. Обратите внимание, что для получения исходного текста используется «обычное» представление строки: если в представлении необходимы последовательности экранирования, они могут быть повреждены при укорачивании представления. По умолчанию 30.

Repr.maxother

Это ограничение используется для управления размером типов объектов, для которых нет специального метода форматирования в объекте Repr. Оно применяется аналогично maxstring. По умолчанию 20.

Repr.repr(obj)

Эквивалент встроенной функции repr(), использующий наложенное форматирование экземпляра.

Repr.repr1(obj, level)

Рекурсивная реализация, используемая методом repr(). Она определяет тип obj, чтобы определить, какой метод форматирования вызвать, передавая ему obj и level. Специфичные для типа методы должны вызывать метод repr1() для рекурсивного форматирования, используя значение level - 1 в качестве level в рекурсивном вызове.

Repr.repr_TYPE(obj, level)

Методы форматирования для конкретных типов реализуются как методы с именем, основанным на имени типа. В имени метода TYPE заменяется на string.join(string.split(type(obj).__name__, '_')). Обработка этих методов выполняется методом repr1(). Специфичные для типа методы, которые нуждаются в рекурсивном форматировании значения, должны вызывать self.repr1(subobj, level - 1).

2. Наследование от объектов Repr

Использование динамического диспетчерирования методом Repr.repr1() позволяет подклассам Repr добавлять поддержку дополнительных встроенных типов объектов или изменять обработку уже поддерживаемых типов. Этот пример демонстрирует, как можно добавить специальную поддержку для объектов файлов:

import repr as reprlib
import sys

class MyRepr(reprlib.Repr):
    def repr_file(self, obj, level):
        if obj.name in ['<stdin>', '<stdout>', '<stderr>']:
            return obj.name
        else:
            return repr(obj)

aRepr = MyRepr()
print aRepr.repr(sys.stdin)          # prints '<stdin>'

© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/repr.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API