Frage

Was wäre der beste Weg, um die __repr__() Funktion für ein Objekt zu behandeln, die persistent gemacht wird? Beispielsweise eine, die eine Reihe in einer Datenbank repräsentiert (relational oder Objekt).

Nach Python-Dokumentation, __repr__() sollte einen String zurück, den das Objekt mit eval(), so dass (grob) eval(repr(obj)) == obj oder Klammer-Notation für ungenaue Darstellungen neu erstellen würde. Normalerweise würde dies bedeuten, alle Daten Dumping, die nicht durch das Objekt in den String regeneriert werden. Doch für persistente Objekte das Objekt neu zu erstellen könnte so einfach sein, die Daten aus der Datenbank als abgerufen werden.

Also, für solche Objekte dann alle Objektdaten oder nur die Primärschlüssel in dem __repr__() String?

War es hilfreich?

Lösung

  

repr sollte einen String zurückgeben, würde   neu erstellen, das Objekt mit eval

Ist das legal für einfache Typen wie int oder String oder Schwimmer, aber nicht verwendbar für mehrspaltige DB-Objekt mit etwa 15+ Spalten

Zum Beispiel, wenn ich eine Klasse darstellt Preis hätte, wäre es sinnvoll sein, die __repr__ zu machen die wichtigsten Merkmale der es zeigen: Betrag und Währung

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

Andere Tipps

Wie es aus der Datenbank zu erhalten, ist uninteressant im Allgemeinen. Bringen Sie die Möglichkeit, das Objekt von Grund auf neu zu erstellen, z.B. SomeModel(field1, field2, ...).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top