2

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

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

那么,对于这样的对象,是所有对象数据还是只是__repr__()字符串中的主键?

4

2 回答 2

1

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

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

例如,如果我有一个代表价格的类,那么让__repr__show 显示它的主要特征是合理的:金额和货币

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 回答