Python 持久对象和__

Python 持久对象和__,python,persistence,repr,Python,Persistence,Repr,对于持久化的对象,处理\uuu repr\uuu()函数的最佳方法是什么?例如,表示数据库(关系或对象)中的行的对象 根据Python文档,\uuu repr\uuuu()应该返回一个字符串,该字符串将使用eval()重新创建对象,以便(粗略地)eval(repr(obj))==obj,或者用括号表示不精确的表示。通常这意味着将对象无法重新生成的所有数据转储到字符串中。但是,对于持久性对象,重新创建对象可能与从数据库检索数据一样简单 因此,对于这样的对象,所有的对象数据或者仅仅是\uuu rep

对于持久化的对象,处理
\uuu repr\uuu()
函数的最佳方法是什么?例如,表示数据库(关系或对象)中的行的对象

根据Python文档,
\uuu repr\uuuu()
应该返回一个字符串,该字符串将使用
eval()
重新创建对象,以便(粗略地)
eval(repr(obj))==obj
,或者用括号表示不精确的表示。通常这意味着将对象无法重新生成的所有数据转储到字符串中。但是,对于持久性对象,重新创建对象可能与从数据库检索数据一样简单


因此,对于这样的对象,所有的对象数据或者仅仅是
\uuu repr\uuu()
字符串中的主键?

如何从数据库中获取数据通常是无趣的。返回从头开始重新创建对象的方法,例如
SomeModel(field1,field2,…)

repr应返回一个字符串,该字符串将 使用eval重新创建对象

这对于int、string或float等简单类型是合法的,但对于具有15+列的多列DB对象不可用

例如,如果我有一个表示price的类,那么让
\uuuu repr\uuuu
显示它的主要特征是:金额和货币是合理的

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