Tu as vu __init__. Il y en a plein d'autres qui commencent et finissent par __ (Double Underscore).
__str__ (Affichage joli)
Par défaut, print(voiture) affiche un truc moche <__main__.Voiture....
On peut changer ça.
class Voiture:
def __init__(self, marque):
self.marque = marque
def __str__(self):
return f"Une magnifique {self.marque}"
v = Voiture("Porsche")
print(v) # Affiche : "Une magnifique Porsche"
__eq__ (Égalité)
Par défaut, deux objets sont différents en mémoire, donc v1 == v2 est False même s'ils ont les mêmes données.
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __eq__(self, autre):
return self.x == autre.x and self.y == autre.y
p1 = Point(1, 2)
p2 = Point(1, 2)
print(p1 == p2) # True (grâce à __eq__)
C'est ça qui rend ton code Python "magique" et intuitif.