Imprimer un objet d'une classe en Python
-
Imprimer un objet en Python en utilisant la méthode
__repr__()
-
Imprimer un objet en Python en utilisant la méthode
__str__()
- Imprimer un objet en Python en ajoutant une nouvelle méthode de classe
Dans ce tutoriel, nous examinerons plusieurs méthodes pour imprimer un objet de classe en Python. Supposons que nous voulions imprimer une instance de classe en utilisant la fonction print()
, comme afficher les données ou les valeurs de l’objet. Nous pouvons le faire en utilisant les méthodes expliquées ci-dessous.
Imprimer un objet en Python en utilisant la méthode __repr__()
La méthode __repr__()
retourne la représentation imprimable de l’objet sous forme de chaîne. Il renvoie par défaut le nom de la classe de l’objet et l’adresse de l’objet.
Lorsque nous imprimons un objet en Python en utilisant la fonction print()
, la méthode __str__()
de l’objet est appelée. S’il n’est pas défini alors le __str__()
renvoie la valeur de retour de la méthode __repr__()
. C’est pourquoi lorsque nous essayons d’imprimer un objet d’une classe définie par l’utilisateur à l’aide de la fonction print()
, cela renvoie la valeur de retour de la méthode __repr__()
.
Par conséquent, nous pouvons définir ou remplacer la méthode __repr__()
pour imprimer le résumé d’un objet ou les valeurs souhaitées.
Supposons que nous ayons une classe définie par l’utilisateur ClassA
sans méthode __repr__()
, l’exemple de code ci-dessous montre la sortie lorsque nous essayons d’imprimer un objet de la ClassA
sans méthode __repr__()
.
class classA:
def __init__(self):
self.var1 = 0
self.var2 = "Hello"
A = classA()
print(A)
Production:
<__main__.classA object at 0x7fa29aa28c50>
Comme nous n’avons pas défini la méthode __repr__()
, elle a renvoyé par défaut le nom de la classe et l’adresse de l’objet.
Maintenant, définissons la méthode __repr__()
de la classe classA
, puis utilisons la fonction print()
. print()
et print(repr())
doivent renvoyer la même valeur.
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))
Production:
This is object of class A
This is object of class A
Imprimer un objet en Python en utilisant la méthode __str__()
La méthode __str__()
renvoie la version chaîne de l’objet en Python. Si un objet n’a pas de méthode __str__()
, il renvoie la même valeur que la méthode __repr__()
.
Nous avons vu dans les exemples de codes ci-dessus, dans le cas où la méthode __str__()
n’est pas définie, la méthode print()
imprime la représentation imprimable de l’objet en utilisant la méthode __repr__()
.
Maintenant, définissons la méthode __str__()
de notre exemple de classe ClassA
puis essayons d’imprimer l’objet de la classA
en utilisant la fonction print()
. La fonction print()
doit retourner la sortie de la méthode __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)
Production:
var1 = 0
var2 = Hello
Imprimer un objet en Python en ajoutant une nouvelle méthode de classe
Une autre approche peut être utilisée à la place de override ou de définir les méthodes __str__()
et __repr__()
de la classe. Une nouvelle méthode print() peut être décrite dans la classe, qui affichera les attributs de classe ou les valeurs de notre choix.
L’exemple de code ci-dessous montre comment définir puis utiliser la méthode object.print()
pour imprimer un objet 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()
Production:
var1 = 0
var2 = False
var3 = Hello