Cours Python — Programmation Orientée Objet
(POO)
1. Introduction
La POO permet de modéliser des éléments du monde réel sous forme d'objets.
Chaque objet est une instance d'une classe, et la classe définit ce que l'objet sait faire (méthodes) et ce qu'il
contient (attributs).
2. Définir une classe
class Personne:
def __init__(self, nom, age):
self.nom = nom # Attribut nom
self.age = age # Attribut âge
def se_presenter(self):
print(f"Bonjour, je m'appelle {self.nom} et j'ai {self.age} ans.")
__init__ : constructeur appelé automatiquement lors de la création d'un objet.
self : référence à l'objet lui-même.
3. Créer un objet (instance)
# Création d'une personne
p1 = Personne("Alice", 30)
# Appel d'une méthode
p1.se_presenter()
# Affiche : Bonjour, je m'appelle Alice et j'ai 30 ans.
4. Attributs d'objet
Les attributs sont des variables associées à l'objet.
print(p1.nom) # Alice
p1.age = 31 # Modification de l'attribut
print(p1.age) # 31
5. Ajouter plusieurs méthodes
class CompteBancaire:
def __init__(self, titulaire, solde=0):
self.titulaire = titulaire
self.solde = solde
def deposer(self, montant):
self.solde += montant
def retirer(self, montant):
if montant <= self.solde:
self.solde -= montant
1
else:
print("Fonds insuffisants.")
def afficher_solde(self):
print(f"Le solde de {self.titulaire} est {self.solde}€.")
Utilisation :
compte = CompteBancaire("Bob", 100)
compte.deposer(50)
compte.retirer(30)
compte.afficher_solde() # Le solde de Bob est 120€.
6. Héritage : créer des classes qui héritent d'autres classes
class Animal:
def __init__(self, nom):
self.nom = nom
def parler(self):
print("L'animal fait un bruit.")
class Chien(Animal):
def parler(self):
print(f"{self.nom} aboie.")
Utilisation :
rex = Chien("Rex")
rex.parler() # Rex aboie.
Chien hérite de Animal, mais surcharge (redéfinit) la méthode parler().
7. Encapsulation (protéger les données)
class Compte:
def __init__(self, solde):
self.__solde = solde # Attribut privé
def deposer(self, montant):
self.__solde += montant
def afficher_solde(self):
print(f"Solde : {self.__solde}€")
Les attributs précédés de __ deviennent privés.
Ils ne sont pas accessibles directement (objet.__solde renverra une erreur).
8. Propriétés (getters et setters modernes)
class Produit:
def __init__(self, prix):
self._prix = prix
@property
def prix(self):
return self._prix
2
@prix.setter
def prix(self, nouveau_prix):
if nouveau_prix > 0:
self._prix = nouveau_prix
else:
print("Le prix doit être positif.")
Utilisation :
p = Produit(100)
print(p.prix) # 100
p.prix = 150
print(p.prix) # 150
p.prix = -10 # Message d'erreur
9. Résumé rapide
Concept Exemple
Créer une classe class MaClasse:
Créer un objet mon_objet = MaClasse()
Attributs self.nom
Méthodes def parler(self):
Héritage class Chien(Animal):
Attributs privés self.__solde
Propriétés @property