Сообщить об ошибке.

Методы объекта PrettyPrinter модуля pprint в Python

В разделе представлены методы объекта PrettyPrinter модуля pprint

Содержание:


PrettyPrinter.pformat(object):

Метод PrettyPrinter.pformat() возвращает отформатированное представление объекта object в виде 'строки', при этом учитываются параметры, передаваемые конструктору pprint.PrettyPrinter.

>>> import pprint
>>> stuff_d = {'one':'spam', 'two':'eggs', 
... 'three':'lumberjack', 'four':'knights', 'five':'ni'}
>>> pp = pprint.PrettyPrinter(width=40)
>>> pp.pformat(stuff_d)
# "{'five': 'ni',\n 'four': 'knights',\n 'one': 'spam',
# \n 'three': 'lumberjack',\n 'two': 'eggs'}"

PrettyPrinter.pprint(object):

Метод PrettyPrinter.pprint() распечатает отформатированное представление объекта object в настроенном потоке с последующим переводом строки.

>>> import pprint
>>> stuff_d = {'one':'spam', 'two':'eggs', 
... 'three':'lumberjack', 'four':'knights', 'five':'ni'}
>>> pp = pprint.PrettyPrinter(width=40)
>>> pp.pprint(stuff_d)
# {'five': 'ni',
#  'four': 'knights',
#  'one': 'spam',
#  'three': 'lumberjack',
#  'two': 'eggs'}

Следующие методы предоставляют реализации для соответствующих функций с такими же именами. Использование этих методов в экземпляре несколько эффективнее, поскольку новые объекты PrettyPrinter создавать не нужно.

PrettyPrinter.isreadable(object):

Метод PrettyPrinter.isreadable() определяет, является ли отформатированное представление объекта object "читабельным" или может использоваться для восстановления значения с помощью функции eval().

Обратите внимание, что метод возвращает False для рекурсивных объектов. Если в PrettyPrinter задан параметр глубины depth и переданный объект object глубже, чем разрешено, то возвращается False.

>>> import pprint
>>> stuff_d = {'one':'spam', 'two':'eggs', 
... 'three':'lumberjack', 'four':'knights', 'five':'ni'}
>>> pp = pprint.PrettyPrinter(width=40)
>>> pp.isreadable(stuff_d)
# True

PrettyPrinter.isrecursive(object):

Метод PrettyPrinter.isrecursive() определяет, требует ли объект рекурсивного представления. Этот метод используется в качестве ловушки, чтобы подклассы могли изменять способ преобразования объектов в строки.

>>> import pprint
>>> stuff_d = {'one':'spam', 'two':'eggs', 
... 'three':'lumberjack', 'four':'knights', 'five':'ni'}
>>> pp = pprint.PrettyPrinter()
>>> pp.isrecursive(stuff_d)
# False

PrettyPrinter.format(object, context, maxlevels, level):

Метод PrettyPrinter.format() возвращает три значения:

  • отформатированную версию объекта object в виде строки,
  • флаг, указывающий, является ли результат читаемым,
  • флаг, указывающий, была ли обнаружена рекурсия.

Первый аргумент - это объект, который будет представлен.

Второй - это словарь, который содержит в качестве ключей id() объектов, которые являются частью текущего контекста представления.

Если необходимо представить объект, который уже представлен в контексте, то третье возвращаемое значение должно быть True. Рекурсивные вызовы метода PrettyPrinter.format() должны добавить дополнительные записи для контейнеров в этот словарь.

Третий аргумент: maxlevels - задает запрошенный предел рекурсии. Аргумент maxlevels будет 0, если нет запрошенного лимита. Этот аргумент должен быть передан без изменений в рекурсивные вызовы.

Четвертый аргумент: level - задает текущий уровень. Рекурсивным вызовам PrettyPrinter.format должно быть передано значение меньше, чем значение текущего вызова.