在 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