def __repr__(self):
return '<%s %s (%s:%s) %s>' % (
self.__class__.__name__, self.urlconf_name, self.app_name,
self.namespace, self.regex.pattern)
Run Code Online (Sandbox Code Playgroud)
这种方法的意义/目的是什么?
laz*_*zy1 168
__repr__应该返回对象的可打印表示,很可能是创建此对象的可能方式之一.请参见官方文档在这里.__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)
Run Code Online (Sandbox Code Playgroud)
dma*_*oni 17
这在Python文档中得到了很好的解释:
repr(object):返回包含对象的可打印表示的字符串.这与转换(反向引号)产生的值相同.能够以普通函数的形式访问此操作有时很有用.对于许多类型,此函数尝试返回一个字符串,该字符串在传递给eval()时会产生具有相同值的对象,否则表示形式是一个用尖括号括起来的字符串,它包含对象类型的名称附加信息通常包括对象的名称和地址.类可以通过定义__repr __()方法来控制此函数为其实例返回的内容.
所以你在这里看到的是__repr__的默认实现,这对序列化和调试很有用.
小智 11
__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 __repr__>
Run Code Online (Sandbox Code Playgroud)
在__str__类中未定义方法的情况下,它将调用该__repr__函数以尝试创建可打印的表示.
>>> str(demo)
'<StackOverflow demo object __repr__>'
Run Code Online (Sandbox Code Playgroud)
此外,print()该类将__str__默认调用.
文档,如果你愿意的话
| 归档时间: |
|
| 查看次数: |
151116 次 |
| 最近记录: |