Vous êtes sur la page 1sur 3

méthodes magiques: (__ hash__,__repr__)

la méthode __hash __:


définition:
La méthode magique __hash__ en Python est utilisée
pour définir le comportement de l'objet lorsqu'il est
utilisé comme une clé dans un dictionnaire ou inséré
dans un ensemble (set). Elle doit renvoyer un entier (le
code de hachage) qui identifie l'objet.
La méthode __hash__ est utilisée par Python pour
optimiser la recherche dans des structures de données
telles que les dictionnaires et les ensembles.
class MaClasse:
def __init__(self, valeur):
self.valeur = valeur
def __hash__(self):
return hash(self.valeur)

# Utilisation de la classe
objet1 = MaClasse(42)
objet2 = MaClasse(42)

# Les objets équivalents ont le même code de hachage


print(objet1 == objet2) # True
print(hash(objet1) == hash(objet2)) # True

# Utilisation dans un ensemble


ensemble = {objet1, objet2}
print(ensemble) # Un seul objet sera ajouté, car ils ont
le même code de hachage
la méthode __repr__:
définition:
a méthode magique __repr__ en Python est utilisée
pour définir une représentation sous forme de chaîne de
l'objet. C'est une méthode spéciale qui est appelée par
la fonction intégrée repr() et par l'instruction print
lorsqu'elle est utilisée pour afficher l'objet.
L'objectif de __repr__ est de fournir une représentation
"formelle" de l'objet, qui doit être une chaîne de
caractères valide en Python telle que si elle est passée à
l'instruction eval(), elle recréera un objet équivalent.

Voici un exemple d'utilisation de __repr__ dans une


class:
class MaClasse:
def __init__(self, valeur):
self.valeur = valeur

def __repr__(self):
return f"MaClasse({self.valeur})"

# Utilisation de la classe
objet = MaClasse(42)

# Appel de repr() directement


representation_formelle = repr(objet)
print(representation_formelle) # Affiche
"MaClasse(42)"

# Appel implicite lors de l'utilisation de l'instruction print


print(objet) # Affiche "MaClasse(42)"
La méthode __repr__ est souvent utilisée pour fournir
une représentation détaillée et explicite de l'objet, ce
qui est utile pour le débogage et la compréhension du
contenu de l'objet. Lorsque __repr__ n'est pas définie,
c'est souvent la méthode __str__ qui est utilisée par
défaut dans les contextes où __repr__ est attendue.

Vous aimerez peut-être aussi