Постоянные объекты и __repr__
-
29-09-2019 - |
Вопрос
Что было бы лучшим способом справиться __repr__()
Функция для объекта, который станет постоянным? Например, тот, который представляет строку в базе данных (реляционная или объект).
Согласно документам Python, __repr__()
следует вернуть строку, которая воссоздает объект с помощью объекта eval()
таково (примерно) eval(repr(obj)) == obj
, или записка в скобках для неточных представлений. Обычно это означало бы сброс всех данных, которые не могут быть восстановлены объектом в строку. Однако для постоянных объектов, воссоздание объекта может быть таким же простым, как извлечение данных из базы данных.
Таким образом, для таких объектов все данные объекта или просто первичный ключ в __repr__()
нить?
Решение
repr должен вернуть строку, которая воссоздает объект с помощью оценки
Это законно для простых типов, таких как int или string или float, но не используется для многоцелевого объекта DB с скажем 15+ столбцов
Например, если бы у меня был класс, представляющий цену, было бы разумно сделать __repr__
Покажите основные характеристики этого: количество и валюта
def __repr__(self):
return '%s %s'%(self.amount,self.currency)
Другие советы
Как получить его из базы данных, как правило, неинтересно. Вернуть путь, чтобы воссоздать объект с нуля, например, SomeModel(field1, field2, ...)
.