8.19. repr — Alternate repr() implementation - Python 2.7.18 documentation 编辑
Note
The repr
module has been renamed to reprlib
in Python 3. The 2to3 tool will automatically adapt imports when converting your sources to Python 3.
Source code: Lib/repr.py
The repr
module provides a means for producing object representations with limits on the size of the resulting strings. This is used in the Python debugger and may be useful in other contexts as well.
This module provides a class, an instance, and a function:
- class
repr.
Repr
Class which provides formatting services useful in implementing functions similar to the built-in repr(); size limits for different object types are added to avoid the generation of representations which are excessively long.
repr.
aRepr
This is an instance of
Repr
which is used to provide therepr()
function described below. Changing the attributes of this object will affect the size limits used byrepr()
and the Python debugger.
repr.
repr
(obj)This is the
repr()
method ofaRepr
. It returns a string similar to that returned by the built-in function of the same name, but with limits on most sizes.
8.19.1. Repr Objects
Repr
instances provide several attributes which can be used to provide size limits for the representations of different object types, and methods which format specific object types.
Repr.
maxlevel
Depth limit on the creation of recursive representations. The default is
6
.
Repr.
maxdict
Repr.
maxlist
Repr.
maxtuple
Repr.
maxset
Repr.
maxfrozenset
Repr.
maxdeque
Repr.
maxarray
Limits on the number of entries represented for the named object type. The default is
4
formaxdict
,5
formaxarray
, and6
for the others.New in version 2.4:
maxset
,maxfrozenset
, andset
.
Repr.
maxlong
Maximum number of characters in the representation for a long integer. Digits are dropped from the middle. The default is
40
.
Repr.
maxstring
Limit on the number of characters in the representation of the string. Note that the “normal” representation of the string is used as the character source: if escape sequences are needed in the representation, these may be mangled when the representation is shortened. The default is
30
.
Repr.
maxother
This limit is used to control the size of object types for which no specific formatting method is available on the
Repr
object. It is applied in a similar manner asmaxstring
. The default is20
.
Repr.
repr
(obj)The equivalent to the built-in repr() that uses the formatting imposed by the instance.
Repr.
repr1
(obj, level)Recursive implementation used by
repr()
. This uses the type of obj to determine which formatting method to call, passing it obj and level. The type-specific methods should callrepr1()
to perform recursive formatting, withlevel - 1
for the value of level in the recursive call.
Repr.
repr_TYPE
(obj, level)Formatting methods for specific types are implemented as methods with a name based on the type name. In the method name, TYPE is replaced by
string.join(string.split(type(obj).__name__, '_'))
. Dispatch to these methods is handled byrepr1()
. Type-specific methods which need to recursively format a value should callself.repr1(subobj, level - 1)
.
8.19.2. Subclassing Repr Objects
The use of dynamic dispatching by Repr.repr1()
allows subclasses of Repr
to add support for additional built-in object types or to modify the handling of types already supported. This example shows how special support for file objects could be added:
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>'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论