在线文档教程

repr

repr — Alternate repr() implementation

注释

repr模块已被重命名为reprlibPython 3. 当将源代码转换为Python 3时,2to3工具将自动适应导入。

源代码: 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.maxdictRepr.maxlistRepr.maxtupleRepr.maxsetRepr.maxfrozensetRepr.maxdequeRepr.maxarray

限制为指定对象类型表示的条目数量。默认值是4for maxdict5for maxarray6for others。

新的2.4版:maxsetmaxfrozenset,和set

Repr.maxlong

长整型表示中的最大字符数。数字从中间被丢弃。默认是40

Repr.maxstring

限制字符串表示中的字符数。请注意,字符串的“正常”表示形式用作字符源:如果在表示形式中需要转义序列,则缩短表示形式时这些转义序列可能会被损坏。默认是30

Repr.maxother

此限制用于控制对象上没有特定格式化方法的对象类型的大小Repr。它以与...相似的方式应用maxstring。默认是20

Repr.repr(obj)

等同于使用实例施加的格式的内置repr()。

Repr.repr1(obj, level)

递归实现使用repr()。这使用obj类型来确定调用哪种格式化方法,并将其传递给objlevel。特定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>'