在 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