reprlib —备用 repr()实现

源代码: Lib/reprlib.py


reprlib模块提供了一种生成对象表示的方法,该对象表示对结果字符串的大小有限制。这在 Python 调试器中使用,并且在其他上下文中也可能有用。

该模块提供了一个类,一个实例和一个函数:

除了大小限制工具之外,该模块还提供了一个装饰器,用于检测对repr()的递归调用并代之以占位符字符串。

>>> from reprlib import recursive_repr
>>> class MyList(list):
...     @recursive_repr()
...     def __repr__(self):
...         return '<' + '|'.join(map(repr, self)) + '>'
...
>>> m = MyList('abc')
>>> m.append(m)
>>> m.append('x')
>>> print(m)
<'a'|'b'|'c'|...|'x'>

3.2 版中的新Function。

Repr Objects

Repr实例提供了几个属性,这些属性可用于为不同对象类型的表示形式提供大小限制,并提供格式化特定对象类型的方法。

子类化 Repr 对象

Repr.repr1()使用动态分派允许Repr的子类添加对其他内置对象类型的支持或修改已经支持的类型的处理。此示例说明如何添加对文件对象的特殊支持:

import reprlib
import sys

class MyRepr(reprlib.Repr):

    def repr_TextIOWrapper(self, obj, level):
        if obj.name in {'<stdin>', '<stdout>', '<stderr>'}:
            return obj.name
        return repr(obj)

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