2010-11-09 102 views
2

對於持久對象來說,處理__repr__()函數的最佳方法是什麼?例如,一個表示數據庫中的行(關係或對象)。持久對象和__repr__

根據Python文檔,__repr__()應該返回一個字符串,該字符串將重新創建該對象,使得(大致)eval(repr(obj)) == obj或用於不精確表示的括號表示法。通常這意味着將所有不能被對象重新生成的數據轉儲到字符串中。但是,對於持久化對象,重新創建對象可能就像從數據庫中檢索數據一樣簡單。

那麼,對於這樣的對象,那麼所有的對象數據還是隻在__repr__()字符串中的主鍵?

回答

1

再版應該返回一個字符串,將 與EVAL重新創建對象

這是合法的,簡單的類型,如int或字符串或浮動,但不能用於多列DB物體說15+列

例如,如果我有代表價格的一類,這將是合理的,使__repr__顯示它的主要特點是:量和貨幣

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

如何從數據庫中獲取它通常是無趣的。返回從頭開始重新創建對象的方式,例如SomeModel(field1, field2, ...)