在 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