Stampa un oggetto di una classe in Python
-
Stampa un oggetto in Python usando il metodo
__repr__()
-
Stampa un oggetto in Python usando il metodo
__str__()
- Stampa un oggetto in Python aggiungendo un nuovo metodo di classe
In questo tutorial, esamineremo più metodi per stampare un oggetto di classe in Python. Supponiamo di voler stampare un’istanza di classe usando la funzione print()
, come visualizzare i dati oi valori dell’oggetto. Possiamo farlo utilizzando i metodi spiegati di seguito.
Stampa un oggetto in Python usando il metodo __repr__()
Il metodo __repr__()
restituisce la rappresentazione stampabile dell’oggetto sotto forma di stringa. Per impostazione predefinita, restituisce il nome della classe dell’oggetto e l’indirizzo dell’oggetto.
Quando stampiamo un oggetto in Python usando la funzione print()
, viene chiamato il metodo __str__()
dell’oggetto. Se non è definito, il __str__()
restituisce il valore di ritorno del metodo __repr__()
. Ecco perché quando proviamo a stampare un oggetto di una classe definita dall’utente usando la funzione print()
, restituisce il valore di ritorno del metodo __repr__()
.
Pertanto, possiamo definire o sovrascrivere il metodo __repr__()
per stampare il riepilogo di un oggetto o i valori desiderati.
Supponiamo di avere una classe definita dall’utente ClassA
senza il metodo __repr__()
, il codice di esempio sotto mostra l’output quando proviamo a stampare un oggetto della ClassA
senza il metodo __repr__()
.
class classA:
def __init__(self):
self.var1 = 0
self.var2 = "Hello"
A = classA()
print(A)
Produzione:
<__main__.classA object at 0x7fa29aa28c50>
Poiché non abbiamo definito il metodo __repr__()
, di default ha restituito il nome della classe e l’indirizzo dell’oggetto.
Ora, definiamo il metodo __repr__()
della classe classA
, e quindi usiamo la funzione print()
. print()
e print(repr())
dovrebbero restituire lo stesso valore.
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))
Produzione:
This is object of class A
This is object of class A
Stampa un oggetto in Python usando il metodo __str__()
Il metodo __str__()
restituisce la versione stringa dell’oggetto in Python. Se un oggetto non ha un metodo __str__()
, restituisce lo stesso valore del metodo __repr__()
.
Abbiamo visto nei codici di esempio sopra, nel caso in cui il metodo __str__()
non sia definito, il metodo print()
stampa la rappresentazione stampabile dell’oggetto usando il metodo __repr__()
.
Ora, definiamo il metodo __str__()
della nostra classe di esempio ClassA
e poi proviamo a stampare l’oggetto della classA
usando la funzione print()
. La funzione print()
dovrebbe restituire l’output del metodo __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)
Produzione:
var1 = 0
var2 = Hello
Stampa un oggetto in Python aggiungendo un nuovo metodo di classe
Un altro approccio può essere usato invece di sovrascrivere o definire i metodi __str__()
e __repr__()
della classe. Un nuovo metodo print() può essere descritto all’interno della classe, che stamperà gli attributi oi valori della classe di nostra scelta.
Il codice di esempio seguente mostra come definire e quindi utilizzare il metodo object.print()
per stampare un oggetto in 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()
Produzione:
var1 = 0
var2 = False
var3 = Hello