print OBJECT
调用OBJECT.__str__()
,然后调用OBJECT.__repr__()
时?我看到print OBJECT
在OBJECT.__repr__()
不存在时调用OBJECT.__str__()
,但我认为这不是调用__repr__()
的唯一方法。
答案 0 :(得分:21)
repr(obj)
呼叫
obj.__repr__
__repr__
的目的是它提供对象的“正式”表示,该表示应该是eval
来创建对象的表达式。就是这样,
obj == eval(repr(obj))
应该,但并非总是在实践中,屈服于True
我在评论中询问了obj != eval(repr(obj))
何时的例子。
class BrokenRepr(object):
def __repr__(self):
return "not likely"
这是另一个:
>>> con = sqlite3.connect(':memory:')
>>> repr(con)
'<sqlite3.Connection object at 0xb773b520>'
>>>
答案 1 :(得分:7)
使用__repr__()
时,repr()
不仅会被调用,而且在以下情况下也会被调用:
obj
,然后按输入 print [u'test']
不打印['test']
答案 2 :(得分:3)
repr(obj)
来电obj.__repr__
。
这是为了清楚地描述一个对象,特别是为了调试目的。 More info in the docs
答案 3 :(得分:1)
在python 2.x中,```obj `` will end up calling
obj。 repr (). It's shorthand for
repr()`。