
On 05/31/2012 04:38 PM, Mike Graham wrote:
On Wed, May 30, 2012 at 11:03 AM, Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de> wrote:
Hi,
i consider my utility class FormatRepr finished, its currently availiable in ( http://pypi.python.org/pypi/reprtools/0.1 )
it supplies a descriptor that allows to simply declare __repr__ methods based on object attributes.
i think it greatly enhances readability for those things, as its DRY and focuses on the parts *i* consider important (e.E. what accessible attribute gets formatted how)
there is no need ot repeat attribute names or care if something is a property,class-attribute or object attribute (one of the reasons why a simple .format(**vars(self)) will not always work)
oversimplified example:
.. code-block:: python
from reprtools import FormatRepr
class User(object): __repr__ = FormatRepr("<User {name}>")
def __init__(self, name): self.name = name
User('test') <User test>
If we introduce something like this, I think I'd prefer an approach that didn't encourage hardcoding "User". In my __repr__s, I usually make the class's name dynamic so it does not make for confusing reprs in the event of subclassing.
you can just use {__class__.__name__} to have it "softcoded"
You really don't end up implementing __repr__ all that often and if you do you writing a simple one isn't hard. I'm -0 on having this in the stdlib.
Mike