[Python-ideas] FormatRepr in reprlib for declaring simple repr functions easily

Ronny Pfannschmidt Ronny.Pfannschmidt at gmx.de
Thu May 31 16:43:23 CEST 2012


On 05/31/2012 04:38 PM, Mike Graham wrote:
> On Wed, May 30, 2012 at 11:03 AM, Ronny Pfannschmidt
> <Ronny.Pfannschmidt at 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




More information about the Python-ideas mailing list