В разделе представлены методы объекта PrettyPrinter
модуля pprint
PrettyPrinter.pformat()
,PrettyPrinter.pprint()
,PrettyPrinter.isreadable()
,PrettyPrinter.isrecursive()
,PrettyPrinter.format()
,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
должно быть передано значение меньше, чем значение текущего вызова.