2010-11-09 3 views
2

Что было бы лучшим способом обработки функции __repr__() для объекта, который сделан постоянным? Например, тот, который представляет строку в базе данных (реляционный или объект).Стойкие объекты и __repr__

Согласно документации Python, __repr__() должен возвращать строку, которая будет повторно создать объект с eval() такой, что (примерно) eval(repr(obj)) == obj или скобки для обозначения неточных представлений. Обычно это означает сброс всех данных, которые не могут быть восстановлены объектом в строку. Однако для постоянных объектов воссоздание объекта может быть таким же простым, как извлечение данных из базы данных.

Итак, для таких объектов тогда все данные объекта или только первичный ключ в строке __repr__()?

ответ

1

магнезия должна возвращать строку, которая будет повторно создать объект с Eval

Это законно для простых типов, таких как Int или строка или поплавок, но не может использоваться для нескольких столбцов БД объекта с говорят 15+ колонны

Например, если у меня был класс, представляющий цену, было бы разумно сделать __repr__ показать основные его характеристики: объем и валюту

def __repr__(self): 
    return '%s %s'%(self.amount,self.currency) 
0

Как получить его из базы данных, как правило, неинтересно. Верните способ воссоздать объект с нуля, например. SomeModel(field1, field2, ...).

Смежные вопросы