在 Python 中列印類的物件

Muhammad Waiz Khan 2023年1月30日
  1. 在 Python 中使用 __repr__() 方法列印一個物件
  2. 在 Python 中使用 __str__() 方法列印一個物件
  3. 在 Python 中通過新增新的類方法列印物件
在 Python 中列印類的物件

在本教程中,我們將研究多種方法來在 Python 中列印類物件。假設我們要使用 print() 函式列印類例項,例如檢視物件的資料或值。我們可以使用下面介紹的方法來做到這一點。

在 Python 中使用 __repr__() 方法列印一個物件

__repr__() 方法以字串形式返回物件的可列印表示形式。預設情況下,它返回物件的類的名稱和物件的地址。

當我們使用 print() 函式在 Python 中列印物件時,將呼叫物件的 __str__() 方法。如果未定義,則 __str__() 返回 __repr__() 方法的返回值。這就是為什麼當我們嘗試使用 print() 函式列印使用者定義類的物件時,它返回 __repr__() 方法的返回值的原因。

因此,我們可以定義或覆蓋 __repr__() 方法以列印物件的摘要或所需值。

假設我們有一個使用者定義的類 ClassA,沒有 __repr__() 方法,下面的示例程式碼演示了當我們嘗試列印沒有 __repr__() 方法的 ClassA 物件時的輸出。

class classA:
    def __init__(self):
        self.var1 = 0
        self.var2 = "Hello"


A = classA()
print(A)

輸出:

<__main__.classA object at 0x7fa29aa28c50>

由於我們尚未定義 __repr__() 方法,因此預設情況下它返回了類的名稱和物件的地址。

現在,讓我們定義類 classA__repr__() 方法,然後使用 print() 函式。print()print(repr()) 應該返回相同的值。

class classA:
    def __init__(self):
        self.var1 = 0
        self.var2 = "Hello"

    def __repr__(self):
        return "This is object of class A"


A = classA()
print(A)
print(repr(A))

輸出:

This is object of class A
This is object of class A

在 Python 中使用 __str__() 方法列印一個物件

__str__() 方法返回 Python 中物件的字串版本。如果物件不具有 __str__() 方法,則它返回與 __repr__() 方法相同的值。

我們在上面的示例程式碼中看到,如果未定義 __str__() 方法,則 print() 方法將使用 __repr__() 方法列印物件的可列印表示形式。

現在,讓我們定義示例類 ClassA__str__() 方法,然後嘗試使用 print() 函式列印 classA 的物件。print() 函式應返回 __str__() 方法的輸出。

class classA:
    def __init__(self):
        self.var1 = 0
        self.var2 = "Hello"

    def __repr__(self):
        return "This is object of class A"

    def __str__(self):
        print("var1 =", self.var1)
        print("var2 =", end=" ")
        return self.var2


A = classA()
print(A)

輸出:

var1 = 0
var2 = Hello

在 Python 中通過新增新的類方法列印物件

可以使用另一種方法來替代或定義類的 __str__()__repr__() 方法。可以在類中描述一個新的 print()方法,該方法將列印出我們選擇的類屬性或值。

下面的示例程式碼演示瞭如何定義然後使用 object.print() 方法來列印 Python 中的一個物件。

class classA:
    def __init__(self):
        self.var1 = 0
        self.var2 = True
        self.var3 = "Hello"

    def print(self):
        print("var1 =", self.var1)
        print("var2 =", self.var2)
        print("var3 =", self.var3)


A = classA()
A.var2 = False
A.print()

輸出:

var1 = 0
var2 = False
var3 = Hello

相關文章 - Python Object