[英]what is means reconstruct object or recreate object in python?
我試圖理解__str__
和__repr__
之間的__str__
以及以下python中__str__和__repr__之間的區別
在回答中說__repr__
的目標是明確的,我感到困惑,這實際上是什么意思。 另一個答案是: __repr__
:python對象的表示形式通常eval
會將其轉換回該對象,因此我已經讀過eval
函數,讓它在其中執行python代碼。
有人可以用簡單的語言解釋這些術語:
__repr__
? eval
和__repr__
什么關系? 也許一個簡單的例子將有助於闡明:
class Object:
def __init__(self, a, b):
self.a = a
self.b = b
def __repr__(self):
return 'Object({0.a!r}, {0.b!r})'.format(self)
該對象具有在__init__
定義的兩個參數和一個明智的__repr__
方法。
>>> o = Object(1, 2)
>>> repr(o)
'Object(1, 2)'
注意,對象的__repr__
現在看起來與我們創建對象的方式完全相同。 合法的Python代碼提供了相同的值。 正如數據模型文檔所述 :
如果可能的話,[
__repr__
]應該看起來像一個有效的Python表達式,可以用來重新創建具有相同值的對象(在適當的環境下)。
那是eval
出現的地方:
>>> x = eval(repr(o))
>>> x.a
1
>>> x.b
2
因為表示形式是Python代碼,所以我們可以對其進行eval
並獲得具有相同值的對象。 這是“重構”原始對象o
。
但是,正如注釋中所指出的那樣,這僅是一個示例,並不意味着您在嘗試創建x
的副本時應該依賴repr(eval(x))
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.