2

__repr__()永続化されたオブジェクトの関数を処理する最良の方法は何ですか? たとえば、データベース (リレーショナルまたはオブジェクト) の行を表すものです。

Python docs によると__repr__()、オブジェクトを再作成する文字列をeval()(大まかに) eval(repr(obj)) == obj、または不正確な表現のブラケット表記で返す必要があります。通常、これは、オブジェクトによって再生成できないすべてのデータを文字列にダンプすることを意味します。ただし、永続オブジェクトの場合、オブジェクトの再作成は、データベースからデータを取得するのと同じくらい簡単です。

では、そのようなオブジェクトの場合、すべてのオブジェクト データまたは__repr__()文字列内の主キーだけでしょうか?

4

2 に答える 2

1

reprは、evalを使用してオブジェクトを再作成する文字列を返す必要があります

これは、int、string、floatなどの単純な型には有効ですが、15列以上の複数列のDBオブジェクトには使用できません。

たとえば、価格を表すクラスがある場合、その__repr__ショーの主な特徴である金額と通貨を表示するのが合理的です。

def __repr__(self):
   return '%s %s'%(self.amount,self.currency)
于 2010-11-09T08:44:01.767 に答える
0

データベースから取得する方法は、一般的に興味深いものではありません。オブジェクトを最初から再作成する方法を返しますSomeModel(field1, field2, ...)

于 2010-11-09T08:41:00.417 に答える