Python的目的__repr__

def __repr__(self): return '<%s %s (%s:%s) %s>' % ( self.__class__.__name__, self.urlconf_name, self.app_name, self.namespace, self.regex.pattern) 

这种方法的意义/目的是什么?

__repr__应该返回该对象的可打印表示,很可能是创build该对象的一种可能方式。 在这里看官方文档。 __repr__更适合开发者,而__str__适合最终用户。

一个简单的例子:

 >>> class Point: ... def __init__(self, x, y): ... self.x, self.y = x, y ... def __repr__(self): ... return 'Point(x=%s, y=%s)' % (self.x, self.y) >>> p = Point(1, 2) >>> p Point(x=1, y=2) 

这在Python文档中有很好的解释:

repr(object) :返回一个包含对象可打印表示的string。 这与转换(反向引号)产生的价值相同。 能够以普通函数的forms访问这个操作有时很有用。 对于很多types来说,这个函数试图返回一个string,当传递给eval()时会返回一个相同值的对象,否则表示就是一个用尖括号括起来的string,它包含了对象types的名字附加信息通常包括对象的名称和地址。 一个类可以通过定义一个__repr __()方法来控制这个函数为其实例返回的内容。

所以你在这里看到的是__repr__的默认实现,这对序列化和debugging很有用。

__repr__方法简单地告诉Python如何打印类的对象

__repr__由独立的Python解释器用来显示可打印格式的类。 例:

 ~> python3.5 Python 3.5.1 (v3.5.1:37a07cee5969, Dec 5 2015, 21:12:44) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> class StackOverflowDemo: ... def __init__(self): ... pass ... def __repr__(self): ... return '<StackOverflow demo object __repr__>' ... >>> demo = StackOverflowDemo() >>> demo <StackOverflow demo object> 

在类中未定义__str__方法的情况下,将调用__repr__函数来尝试创build可打印的表示。

 >>> str(demo) '<StackOverflow demo object __repr__>' 

此外, print()类将默认调用__str__


文件 ,如果你愿意