对于持久化的对象,处理__repr__()
函数的最佳方法是什么?例如,一个表示数据库中的行(关系或对象)。
根据Python文档,__repr__()
应返回一个字符串,该字符串将使用eval()
重新创建对象,使(大致)eval(repr(obj)) == obj
或不精确表示的括号表示法。通常这意味着将对象无法重新生成的所有数据转储到字符串中。但是,对于持久对象,重新创建对象可能就像从数据库中检索数据一样简单。
那么,对于这样的对象,那么,所有对象数据还是__repr__()
字符串中的主键?
答案 0 :(得分:1)
repr应该返回一个字符串 使用eval重新创建对象
对于像int或string或float这样的简单类型来说这是合法的,但是对于多列数据库对象(例如15列以上)不可用
例如,如果我有一个代表价格的类,那么__repr__
显示它的主要特征是合理的:金额和货币
def __repr__(self):
return '%s %s'%(self.amount,self.currency)
答案 1 :(得分:0)
如何从数据库中获取它通常是无趣的。返回从头开始重新创建对象的方法,例如SomeModel(field1, field2, ...)
。