repr (Data Types) – Python 中文开发手册

[
  •   Python 中文开发手册

    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 中文开发手册
    ]
    转载请保留页面地址:https://www.breakyizhan.com/python/35175.html
    原文地址:https://www.cnblogs.com/breakyizhan/p/13281441.html