Python object.__repr__(self) should be an expression?
Question: I was looking at the builtin object methods in the [Python
documentation](http://docs.python.org/reference/datamodel.html#objects-values-
and-types), and I was interested in the documentation for
`object.__repr__(self)`. Here's what it says:

> Called by the repr() built-in function and by string conversions (reverse
> quotes) to compute the “official” string representation of an object. If at
> all possible, this should look like a valid Python expression that could be
> used to recreate an object with the same value (given an appropriate
> environment). If this is not possible, a string of the form <...some useful
> description...> should be returned. The return value must be a string
> object. If a class defines **repr**() but not **str**(), then **repr**() is
> also used when an “informal” string representation of instances of that
> class is required.
>
> This is typically used for debugging, so it is important that the
> representation is information-rich and unambiguous

The most interesting part to me, was...

> If at all possible, this should look like a valid Python expression that
> could be used to recreate an object with the same value

... but I'm not sure exactly what this means. It says it should _look_ like an
expression which can be used to recreate the object, but does that mean it
should just be an example of the sort of expression you could use, or should
it be an actual expression, that can be executed (eval etc..) to recreate the
object? Or... should it be just a rehasing of the actual expression which was
used, for pure information purposes?

In general I'm a bit confused as to exactly what I should be putting here.


Answer: 
    >>> from datetime import date
    >>>
    >>> repr(date.today())        # calls date.today().__repr__()
    'datetime.date(2009, 1, 16)'
    >>> eval(_)                   # _ is the output of the last command
    datetime.date(2009, 1, 16)
    

The output is a string that can be parsed by the python interpreter and
results in an equal object.

If that's not possible, it should return a string in the form of `<...some
useful description...>`.

