print OBJECT calls OBJECT.__str__(), then when OBJECT.__repr__() is called? I see that print OBJECT calls OBJECT.__
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 evaled 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)
''
>>>