cybercursus

Introduction aux classes : structurer ses données

15 min · Avancé · 7 août 2026

Sommaire
  1. Regrouper des données et leur comportement
  2. init et self
  3. Une méthode qui modifie l’état de l’instance
  4. À toi de jouer

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.

python
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

python
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.

python
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
À quel moment la méthode __init__ d'une classe s'exécute-t-elle ?
Que représente self dans une méthode de classe ?

Pour aller plus loin

Commentaires

Recherche