Reputation: 190659
print OBJECT
calls OBJECT.__str__()
, then when OBJECT.__repr__()
is called? I see that print OBJECT
calls OBJECT.__repr__()
when OBJECT.__str__()
doesn't exist, but I expect that's not the only way to call __repr__()
.
Upvotes: 24
Views: 16507
Reputation: 86064
In python 2.x, `obj`
will end up calling obj.__repr__()
. It's shorthand for repr()
.
Upvotes: 1
Reputation: 11996
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']
Upvotes: 11
Reputation: 44156
repr(obj)
calls obj.__repr__
.
This is intended to clearly describe an object, specially for debugging purposes. More info in the docs
Upvotes: 4
Reputation: 70984
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>'
>>>
Upvotes: 32