repr (Data Types) - Python 中文开发手册
注释
该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 maxdict,5for maxarray和6for others。
新的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>'Python 中文开发手册