Определение __repr __ (self) для динамического создания в python - PullRequest
3 голосов
/ 07 июля 2011

У меня есть класс

class FooBar(object):
    def __repr__(self):
        pass

, и я хочу реализовать функцию __repr__.Поскольку я использую FooBar в качестве удобного контейнера и динамически добавляю некоторые атрибуты, я подумал и о динамическом генерировании __repr__.(Если это плохая практика, пожалуйста, объясните и просветите меня: -))

Я подумал о чем-то вроде:

def __repr__(self):
    return '<FooBar({WHAT IS ELEGANT AND GOES HERE?})>'.format(**self.__dict__)

Есть предложения?Спасибо!

1 Ответ

1 голос
/ 07 июля 2011
>>> '<FooBar({!r})>'.format({'a':1, 'b':2})
"<FooBar({'a': 1, 'b': 2})>"

на Python2.6 вам придется использовать {0!r}

Я думаю

'<FooBar({!r})>'.format(vars(self))

лучше, чем ссылаться на .__dict__

...