當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python __repr__()用法及代碼示例


Python __repr__()其中一個魔法方法 返回一個可打印的表示對象Python可以自定義或預定義,即我們還可以根據需要創建對象的字符串表示形式。

Python __repr__() 魔術方法語法

用法: object.__repr__()
  • object: The object whose printable representation is to be returned.

返回: Simple string representation of the passed object.

Python __repr__() 方法示例

在此示例中,我們定義了一個 GFG 類,其中三個實例變量 f_name、m_name 和 l_name 分別代表一個人的名字、中間名和姓氏。這__repr__()方法被定義為返回一個string以可用於重新創建對象的格式表示實例。

Python3


class GFG:
   
    def __init__(self, f_name, m_name, l_name):
        self.f_name = f_name
        self.m_name = m_name
        self.l_name = l_name
    def __repr__(self):
        return f'GFG("{self.f_name}","{self.m_name}","{self.l_name}")'
gfg = GFG("Geeks", "For", "Geeks")
print(repr(gfg))

輸出:

GFG("Geeks","For","Geeks")

__str__()和__repr__()魔法方法的區別

在此示例中,我們定義了一個 GFG 類,其中一個實例變量名稱代表一個人的名字。 __str__() 方法定義為返回實例的人類可讀字符串表示形式,而 __repr__() 方法定義為返回可用於重新創建對象的實例的字符串表示形式。

當我們創建 GFG 類的實例並直接在該對象上調用 __str__() 或 __repr__() 時,將調用相應的方法並返回表示該對象的字符串。

Python3


class GFG:
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return f'Name is {self.name}'
    def __repr__(self):
        return f'GFG(name={self.name})'
obj = GFG('GeeksForGeeks')
print(obj.__str__())
print(obj.__repr__())

輸出:

Name is GeeksForGeeks
GFG(name=GeeksForGeeks)

您還可以閱讀str() vs repr() in Python

使用內置類的 __str__() 和 __repr__() 示例

在這個例子中,我們定義了一個子類元組稱為 MyTuple 覆蓋__str__()__repr__()方法。當我們調用時str()或者repr()在 MyTuple 的實例上,自定義__str__()__repr__()分別調用方法。

Python3


class MyTuple(tuple):
    def __str__(self):
        return f"MyTuple({super().__str__()})"
    def __repr__(self):
        return f"MyTuple({super().__repr__()})"
mt = MyTuple((1,2,3))
print(mt.__repr__())
print(mt.__str__())

輸出:

MyTuple((1, 2, 3))
MyTuple(MyTuple((1, 2, 3)))

__str__() 和 __repr__() 使用新類的示例

在這個例子中,我們定義了一個Book類,它有三個實例變量title、author和pages,分別代表一本書的標題、作者和頁數。 __str__() 方法定義為以人類可讀的格式返回實例的字符串表示形式,而 __repr__() 方法定義為返回可用於重新創建對象的實例的字符串表示形式。

當我們創建 Book 類的實例並對其調用 str() 時,__str__()方法被調用並返回一個表示該對象的人類可讀的字符串。當我們調用時repr()其上,__repr__()方法被調用並且返回以可以重新創建的方式表示對象的字符串。

Python3


class Book:
    def __init__(self, title, author, pages):
        self.title = title
        self.author = author
        self.pages = pages
    def __str__(self):
        return f"{self.title} by {self.author}, {self.pages} pages"
    def __repr__(self):
        return f"Book('{self.title}', '{self.author}', {self.pages})"
book1 = Book("The Hitchhiker's Guide to the Galaxy", "Douglas Adams", 224)
print("Using str(): ", str(book1))
print("Using repr(): ", repr(book1))

輸出:

Using str():  The Hitchhiker's Guide to the Galaxy by Douglas Adams, 224 pages
Using repr():  Book('The Hitchhiker's Guide to the Galaxy', 'Douglas Adams', 224)

__repr__()魔術方法的實際使用

此代碼創建一個 Color 類,其中包含__init__()方法采用後綴參數並設置實例變量自我。該值的後綴。它還設置另一個實例變量 self。標題為string包括後綴。最後,它定義了一個__repr__()返回對象的字符串表示形式的方法。

Python3


class Color:
    def __init__(self, suffix):
        self.suffix = suffix
        self.title = f"Golden {suffix}"
    def __repr__(self):
        return f"Color('{self.suffix}')"
c1 = Color("Yellow")
# create another object with same params as c1
# using eval() on repr()
c2 = eval(repr(c1))
print("c1.title:", c1.title)
print("c2.title:", c2.title)

輸出:

c1.title: Golden Yellow
c2.title: Golden Yellow


相關用法


注:本文由純淨天空篩選整理自shlokdi35dq大神的英文原創作品 Python __repr__() magic method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。