Pregunta

¿Cuál sería la mejor manera de manejar la función __repr__() para un objeto que se hace persistente? Por ejemplo, uno que se representa una fila en una base de datos (relacional u objeto).

De acuerdo con documentación de Python, __repr__() debe devolver una cadena que volver a crear el objeto con eval() tal que (más o menos) eval(repr(obj)) == obj, o anotación soporte para las representaciones inexactas. Por lo general, esto significaría echando todos los datos que no pueden ser regenerados por el objeto en la cadena. Sin embargo, para objetos persistentes recreando el objeto podría ser tan simple como la recuperación de los datos de la base de datos.

Por lo tanto, para este tipo de objetos a continuación, todos los datos de objeto o sólo la clave principal en la cadena __repr__()?

¿Fue útil?

Solución

  

repr debe devolver una cadena que haría   Volver a crear el objeto con eval

Eso es legal para los tipos simples como int o cuerda o flotador, pero no utilizable para varias columnas DB objeto con, por ejemplo más de 15 columnas

Por ejemplo, si tuviera un precio que representa la clase, sería razonable hacer la __repr__ muestran las principales características de la misma: cantidad y moneda

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

Otros consejos

Como llegar desde la base de datos es generalmente poco interesante. Devolver la manera de recrear el objeto a partir de cero, por ejemplo, SomeModel(field1, field2, ...).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top