首頁  >  文章  >  後端開發  >  Python 中「__repr__」的用途是什麼?

Python 中「__repr__」的用途是什麼?

Susan Sarandon
Susan Sarandon原創
2024-11-03 18:41:29465瀏覽

What is the purpose of `__repr__` in Python and how does it differ from `__str__`?

揭開Representer的面紗:探索repr

Python龐大的面向對象能力的生態系統被一系列對象能力的生態系統被一系列多方面的dunder 方法,每種方法都經過精心設計,以滿足特定需求。在這個萬神殿中存在著神秘的 __repr__,它是一個籠罩在神秘之中的神秘實體,對於物件表示領域至關重要。

將自己視為一個勇敢的調查員,肩負著解開 __repr__ 之謎的任務。您的探索從檢查其解剖結構開始,如所提供的複雜程式碼片段所示:

<code class="python">def __repr__(self):
  return '<%s %s (%s:%s) %s>' % (
    self.__class__.__name__, self.urlconf_name, self.app_name,
    self.namespace, self.regex.pattern)</code>

repr 的神秘語法隱藏了​​深刻的目的。它使物體能夠清晰地表達其內在自我,將其本質提煉成清晰的格式。這種表現形式超越了單純的視覺吸引力的限制。它充當重新創建物體的藍圖,使其能夠從其像徵性的化身中復活。

repr的意義超越了其作為復甦器的作用。它是在互動式 shell 中呈現物件的首選管道,是供程式設計師修補和探索的互動式遊樂場。透過重寫 __repr__,您可以自訂物件的描繪方式,將它們從神秘的實體轉變為可理解的同伴。

但是,repr 的職責以 str__ 的統治結束開始。 __repr 優先考慮開發人員友善的表示,而 str 則承擔起迎合最終用戶的責任。它力求打造一種與人類情感產生共鳴的表示形式,一種描繪出清晰簡潔的圖畫的解釋。

為了說明細微差別,請考慮以下程式碼片段:

<code class="python">class Point:
    def __init__(self, x, y):
        self.x, self.y = x, y
    def __repr__(self):
        cls = self.__class__.__name__
        return f'{cls}(x={self.x!r}, y={self.y!r})'</code>

呼叫repr 產生為開發人員量身訂製的輸出:

>>> p = Point(1, 2)
>>> print(repr(p))
Point(x=1, y=2)  # Developer-centric representation

相較之下,str 產生更用戶友善的再現:

>>> print(str(p))
(1, 2)  # User-friendly representation

因此,repr 成為製作客製化物件表示的不可或缺的工具,也是調試和內省的工具。它揭示了物體的內部運作方式,揭示了它們的複雜性並促進它們的復活。它的同伴 __str__ 承擔翻譯者的角色,以符合人類理解的形式呈現對象。這些 dunder 方法共同編排了 Python 物件表示的充滿活力的掛毯,使開發人員能夠以資訊豐富且用戶友好的方式與物件互動。

以上是Python 中「__repr__」的用途是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn