print OBJECT
calls OBJECT.__str__()
, then when OBJECT.__repr__()
is called? I see that print OBJECT
calls OBJECT.__
repr(obj)
calls obj.__repr__
.
This is intended to clearly describe an object, specially for debugging purposes. More info in the docs
Not only does __repr__()
get called when you use repr()
, but also in the following cases:
obj
in the shell and press enterprint [u'test']
does not print ['test']
repr(obj)
calls
obj.__repr__
the purpose of __repr__
is that it provides a 'formal' representation of the object that is supposed to be a expression that can be eval
ed to create the object. that is,
obj == eval(repr(obj))
should, but does not always in practice, yield True
I was asked in the comments for an example of when obj != eval(repr(obj))
.
class BrokenRepr(object):
def __repr__(self):
return "not likely"
here's another one:
>>> con = sqlite3.connect(':memory:')
>>> repr(con)
'<sqlite3.Connection object at 0xb773b520>'
>>>
In python 2.x, `obj`
will end up calling obj.__repr__()
. It's shorthand for repr()
.