Programmation orientée objet en Python
La programmation orientée objet (POO) est l'un des paradigmes les plus importants du développement moderne. Python prend en charge la POO à tous les niveaux, ce qui en fait un outil puissant aussi bien pour les développeurs débutants que pour les programmeurs professionnels.
La POO permet de modéliser le monde réel, d'améliorer la lisibilité du code, de réutiliser des composants et de gérer la complexité des projets. Les concepts clés de la programmation orientée objet sont les classes et les objets, ainsi que les principes fondamentaux : héritage, encapsulation et polymorphisme.
Cette approche structure le programme comme un ensemble d'objets interagissant entre eux, chacun étant une instance d'une classe spécifique. Cela rend le code plus modulaire, compréhensible et facile à maintenir.
Les bases des classes et objets en Python
Définition d'une classe et d'un objet
Une classe est un modèle ou un plan pour créer des objets. Elle définit la structure des données et les méthodes qui seront disponibles pour tous les objets de ce type.
Un objet est une instance concrète d'une classe, qui possède ses propres données et peut exécuter les actions définies dans la classe.
class Voiture:
def conduire(self):
print("La voiture roule")
ma_voiture = Voiture() # objet (instance de la classe)
ma_voiture.conduire()
Dans le code ci-dessus, la classe Voiture définit un modèle pour créer des objets voiture. La méthode conduire() décrit le comportement accessible à toutes les instances de cette classe.
Structure d'une classe en Python
La structure de base d'une classe en Python est la suivante :
class NomDeClasse:
def __init__(self, arguments):
self.proprietes = valeurs
def methode(self):
actions
Les composants importants d'une classe incluent :
- init — le constructeur de la classe, appelé automatiquement lors de la création d'un nouvel objet
- self — un paramètre spécial qui représente une référence à l'instance actuelle de l'objet
- Attributs — des variables qui stockent les données de l'objet
- Méthodes — des fonctions définies à l'intérieur de la classe et liées à l'objet
Création et utilisation des classes
Exemple pratique de création d'une classe
Créons une classe Personne qui modélise une personne :
class Personne:
def __init__(self, nom, age):
self.nom = nom
self.age = age
def saluer(self):
print(f"Bonjour, je m'appelle {self.nom}")
def get_infos(self):
return f"Nom : {self.nom}, Âge : {self.age}"
p = Personne("Anna", 30)
p.saluer()
print(p.get_infos())
Dans cet exemple, le constructeur init prend les paramètres nom et age, qui sont stockés comme attributs de l'instance. Les méthodes saluer() et get_infos() fournissent des fonctionnalités pour travailler avec les données de l'objet.
Création d'instances de classe
Le processus de création d'une instance de classe en Python se fait en appelant la classe comme une fonction :
p1 = Personne("Jean", 25)
p2 = Personne("Marie", 28)
print(p1.nom) # Jean
print(p1.age) # 25
print(p2.nom) # Marie
Chaque appel au constructeur de la classe crée un nouvel objet indépendant avec ses propres attributs et son propre état.
Attributs dans les classes Python
Attributs d'instance
Les attributs d'instance sont uniques à chaque objet. Ils sont créés et initialisés dans la méthode init et peuvent être modifiés pendant l'exécution du programme :
class Etudiant:
def __init__(self, nom, note):
self.nom = nom
self.note = note
def mettre_a_jour_note(self, nouvelle_note):