I think we probably want to use __str__ here instead of __repr__.  My understanding is that __str__ is for human-readable representations, whereas __repr__ is for the interpreter to use.  In general `eval(repr(x)) == x` should hold when implementing __repr__