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__()
.
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>'
>>>
Not only does __repr__()
get called when you use repr()
, but also in the following cases:
obj
in the shell and press enter
print [u'test']
does not print ['test']
repr(obj)
calls obj.__repr__
.
This is intended to clearly describe an object, specially for debugging purposes. More info in the docs
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With