簡體   English   中英

什么是在python中重建對象或重新創建對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM