Question

Quelle serait la meilleure façon de gérer la fonction __repr__() pour un objet qui est rendu persistant? Par exemple, celui qui représente une ligne dans une base de données (relationnelle ou objet).

Selon docs Python, __repr__() doit retourner une chaîne qui recréer l'objet avec eval() tel que (à peu près) eval(repr(obj)) == obj ou notation de support pour les représentations inexactes. Habituellement, cela signifierait le dumping toutes les données qui ne peuvent être régénérés par l'objet dans la chaîne. Cependant, pour les objets persistants recréant l'objet pourrait être aussi simple que la récupération des données de la base de données.

Alors, pour ces objets puis, toutes les données d'objet ou tout simplement la clé primaire dans la chaîne de __repr__()?

Était-ce utile?

La solution

  

rééd doit retourner une chaîne qui serait   recréer l'objet avec eval

C'est légal pour les types simples comme int ou ficelle ou flottant, mais pas utilisable pour objet DB multi-colonnes avec des colonnes dites 15+

Par exemple, si j'avais un prix représentant la classe, il serait raisonnable de faire le __repr__ montrent les principales caractéristiques de celui-ci: montant et la devise

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

Autres conseils

Comment l'obtenir à partir de la base de données est sans intérêt en général. Retour de la façon de recréer l'objet à partir de zéro, par exemple SomeModel(field1, field2, ...).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top