Avant d’écrire une classe, il est essentiel de comprendre **ce que l’on cherche à modéliser** et **pourquoi une classe est pertinente**. ### 🔹 Classe et objet : le principe fondamental En Python, une **classe** est un **modèle** (ou plan) décrivant une entité : - ce qu’elle **est** → ses **attributs** (données), - ce qu’elle **fait** → ses **méthodes** (actions). Un **objet** (ou *instance*) est une **réalisation concrète** de cette classe. > 👉 Une classe définit un type, un objet est une occurrence de ce type. ### 🔹 Attributs et méthodes Une classe regroupe deux éléments essentiels : - **Attributs** Ce sont les variables propres à chaque objet *(ex. : position, état, valeur, nom…)* - **Méthodes** Ce sont des fonctions associées à la classe, qui décrivent les actions possibles de l’objet. Les méthodes utilisent le mot-clé **`self`** pour accéder aux attributs de l’objet courant. > 👉 `self` représente l’objet lui-même. ### 🔹 Le constructeur `__init__` Le constructeur est une méthode spéciale : - appelée automatiquement lors de la création d’un objet, - chargée d’initialiser ses attributs. Il garantit que tout objet est **cohérent dès sa création**. > 👉 Sans constructeur clair, un objet peut exister dans un état incomplet ou invalide. ### 🔹 Représentation d’un objet : `__str__` Par défaut, afficher un objet avec `print` donne une information peu lisible. La méthode spéciale `__str__` permet de définir : - une représentation textuelle compréhensible, - utile pour l’affichage, le débogage et la compréhension du programme. > 👉 Un bon `__str__` rend un objet explicite et interprétable. ### 🔹 Quand utiliser une classe ? Une classe est pertinente lorsque : - plusieurs variables décrivent **une même entité logique**, - les mêmes fonctions agissent toujours sur les mêmes données, - le programme commence à devenir difficile à lire ou à faire évoluer. ### 🔹 Pourquoi structurer son code avec des classes ? L’utilisation des classes permet : - une **meilleure organisation** du code, - une **réduction des erreurs** (données et actions regroupées), - une **meilleure lisibilité**, - une base solide pour des concepts plus avancés (héritage, composition…). ## 📚 Manipuler en Python > [!info] Exemple de classe en Python > 🔗 **[Les classes en Python – Notebook](https://github.com/unilasalle-apex/Python/blob/main/Les_classes.ipynb)**