Skip to main content
 首页 » 编程设计

python之持久对象和 __repr__

2025年05月04日13xing901022

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

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

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

请您参考如下方法:

repr should return a string that would re-create the object with eval

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

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

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