Imprimir um objeto de uma classe em Python

Muhammad Waiz Khan 30 janeiro 2023
  1. Imprima um objeto em Python usando o método __repr__()
  2. Imprima um objeto em Python usando o método __str__()
  3. Imprimir um objeto em Python adicionando um novo método de classe
Imprimir um objeto de uma classe em Python

Neste tutorial, examinaremos vários métodos para imprimir um objeto de classe em Python. Suponha que queremos imprimir uma instância de classe usando a função print(), como visualizar os dados ou valores do objeto. Podemos fazer isso usando os métodos explicados abaixo.

Imprima um objeto em Python usando o método __repr__()

O método __repr__() retorna a representação imprimível do objeto na forma de uma string. Ele, por padrão, retorna o nome da classe do objeto e o endereço do objeto.

Quando imprimimos um objeto em Python usando a função print(), o método __str__() do objeto é chamado. Se não for definido, então __str__() retorna o valor de retorno do método __repr__(). É por isso que quando tentamos imprimir um objeto de uma classe definida pelo usuário usando a função print(), ele retorna o valor de retorno do método __repr__().

Portanto, podemos definir ou sobrescrever o método __repr__() para imprimir o resumo de um objeto ou os valores desejados.

Suponha que tenhamos uma classe definida pelo usuário ClassA sem método __repr__(), o código de exemplo abaixo demonstra a saída quando tentamos imprimir um objeto de ClassA sem método __repr__().

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


A = classA()
print(A)

Resultado:

<__main__.classA object at 0x7fa29aa28c50>

Como não definimos o método __repr__(), ele retornou por padrão o nome da classe e o endereço do objeto.

Agora, vamos definir o método __repr__() da classe classA, e então usar a função print(). O print() e print(repr()) devem retornar o mesmo 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))

Resultado:

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

Imprima um objeto em Python usando o método __str__()

O método __str__() retorna a versão string do objeto em Python. Se um objeto não tiver um método __str__(), ele retornará o mesmo valor que o método __repr__().

Vimos nos códigos de exemplo acima, caso o método __str__() não seja definido, o método print() imprime a representação imprimível do objeto usando o método __repr__().

Agora, vamos definir o método __str__() de nossa classe de exemplo ClassA e então tentar imprimir o objeto da classA usando a função print(). A função print() deve retornar a saída do 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)

Resultado:

var1 = 0
var2 = Hello

Imprimir um objeto em Python adicionando um novo método de classe

Outra abordagem pode ser usada em vez de substituir ou definir os métodos __str__() e __repr__() da classe. Um novo método print() pode ser descrito dentro da classe, que imprimirá os atributos ou valores da classe de nossa escolha.

O código de exemplo a seguir demonstra como definir e, em seguida, usar o método object.print() para imprimir um objeto em 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()

Resultado:

var1 = 0
var2 = False
var3 = Hello

Artigo relacionado - Python Object