Introduction aux classes : structurer ses données
15 min · Avancé · 7 août 2026
Regrouper des données et leur comportement
Jusqu’ici, les données (une liste, un dictionnaire) et les fonctions qui les manipulent restaient séparées. Une classe les regroupe : elle définit un modèle, dont chaque instance porte ses propres données.
class Personne:
def __init__(self, nom, age):
self.nom = nom
self.age = age
def saluer(self):
return f"Bonjour, je m'appelle {self.nom} et j'ai {self.age} ans."
alice = Personne("Alice", 25)
bob = Personne("Bob", 40)
print(alice.saluer()) # Bonjour, je m'appelle Alice et j'ai 25 ans.
print(bob.saluer()) # Bonjour, je m'appelle Bob et j'ai 40 ans. init et self
__init__ s’exécute automatiquement à chaque création d’instance (Personne("Alice", 25)), pour initialiser ses attributs. self, premier paramètre de chaque méthode, désigne l’instance en cours : self.nom appartient à cette instance précise, jamais partagé avec une autre.
Astuce
alice et bob sont deux instances indépendantes de la même classe : modifier alice.age ne change strictement rien à bob.age. Chaque instance porte ses propres attributs.
Une méthode qui modifie l’état de l’instance
class Compteur:
def __init__(self):
self.valeur = 0
def incrementer(self):
self.valeur = self.valeur + 1
compteur = Compteur()
compteur.incrementer()
compteur.incrementer()
print(compteur.valeur) # 2 Chaque appel à incrementer() modifie self.valeur sur l’instance concernée, un état qui persiste d’un appel à l’autre, contrairement à une variable locale d’une fonction ordinaire.
À toi de jouer
Écris une classe CompteBancaire avec un constructeur __init__(self, solde=0), une méthode deposer(self, montant) qui augmente le solde, et une méthode retirer(self, montant) qui diminue le solde et renvoie True si le solde est suffisant, ou ne change rien et renvoie False sinon.
class CompteBancaire:
def __init__(self, solde=0):
# A completer
pass
def deposer(self, montant):
# A completer
pass
def retirer(self, montant):
# Renvoie False si le solde est insuffisant, sans rien changer
# Renvoie True et diminue le solde sinon
pass