Imprimir un objeto de una clase en Python

Muhammad Waiz Khan 30 enero 2023
  1. Imprima un objeto en Python usando el método __repr__()
  2. Imprima un objeto en Python usando el método __str__()
  3. Imprima un objeto en Python agregando un nuevo método de clase
Imprimir un objeto de una clase en Python

En este tutorial, analizaremos varios métodos para imprimir un objeto de clase en Python. Supongamos que queremos imprimir una instancia de clase usando la función print(), como ver los datos o valores del objeto. Podemos hacerlo utilizando los métodos que se explican a continuación.

Imprima un objeto en Python usando el método __repr__()

El método __repr__() devuelve la representación imprimible del objeto en forma de cadena. De forma predeterminada, devuelve el nombre de la clase del objeto y la dirección del objeto.

Cuando imprimimos un objeto en Python usando la función print(), se llama al método __str__() del objeto. Si no está definido, __str__() devuelve el valor de retorno del método __repr__(). Es por eso que cuando intentamos imprimir un objeto de una clase definida por el usuario usando la función print(), devuelve el valor de retorno del método __repr__().

Por lo tanto, podemos definir o anular el método __repr__() para imprimir el resumen de un objeto o los valores deseados.

Supongamos que tenemos una clase ClassA definida por el usuario sin el método __repr__(), el código de ejemplo siguiente demuestra la salida cuando intentamos imprimir un objeto de la ClassA sin el método __repr__().

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


A = classA()
print(A)

Producción :

<__main__.classA object at 0x7fa29aa28c50>

Como no hemos definido el método __repr__(), ha devuelto por defecto el nombre de la clase y la dirección del objeto.

Ahora, definamos el método __repr__() de la clase classA, y luego usemos la función print(). print() e print(repr()) deberían devolver el mismo valor.

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))

Producción :

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

Imprima un objeto en Python usando el método __str__()

El método __str__() devuelve la versión de cadena del objeto en Python. Si un objeto no tiene un método __str__(), devuelve el mismo valor que el método __repr__().

Hemos visto en los códigos de ejemplo anteriores, en caso de que el método __str__() no esté definido, el método print() imprime la representación imprimible del objeto utilizando el método __repr__().

Ahora, definamos el método __str__() de nuestra clase de ejemplo ClassA y luego intentemos imprimir el objeto de la classA usando la función print(). La función print() debería devolver la salida del método __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)

Producción :

var1 = 0
var2 = Hello

Imprima un objeto en Python agregando un nuevo método de clase

Se puede usar otro enfoque en lugar de anular o definir los métodos __str__() y __repr__() de la clase. Se puede describir un nuevo método print() dentro de la clase, que imprimirá los atributos o valores de la clase de nuestra elección.

El siguiente código de ejemplo demuestra cómo definir y luego usar el método object.print() para imprimir un objeto en 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()

Producción :

var1 = 0
var2 = False
var3 = Hello

Artículo relacionado - Python Object