La POO en Python
Cette page explique comment utiliser la programmation orientée objet en python et donne un exemple concret de passage de code « classique » à un code orienté objet via l’exemple du jeu du pendu.
Elle est séparée en deux parties :
Comment faire de la Programmation Orientée Objet dans son code ?
Créer une classe
En Python, pour créer une classe, on utilise le mot-clé classe, suivi du nom de la classe. Ensuite, il faut ajouter ce qu’on appelle le constructeur :
class Pendu: |
Lorsqu’on va créer un objet de cette classe, le constructeur est simplement la fonction qui va être appelée au tout début. On peut ajouter des arguments à cette fonction pour donner des valeurs à des variables de cette classe.
Dans l’exemple ci-dessus, lorsque l’on créera un objet Pendu, il ne se passera rien de particulier (l’instruction pass permet de créer une fonction vide).
class Perso: |
Mais dans de nombreux cas on souhaite qu’il se passe quelque chose lors de l’initialisation ! Dans l’exemple ci-contre, lorsqu’un Perso sera créé, on récupèrera son nom, sa force, sa vitesse, et on calculera le taux_coup_critique.
Instancier un objet
Pour créer un objet de cette classe, on va utiliser le nom de la classe comme si c’était une fonction comme ceci :
partie = Pendu() |
mon_perso = Perso("Batman", 25, 10) |
Si la classe en question requiert des arguments, il faut alors bien sûr les préciser.
Attributs & méthodes
Pour définir des variables de classe (c’est-à-dire des attributs), il faut utiliser le mot-clé self. On peut donc créer une variable en_cours par exemple qui serait un booléen initialisé à False. Et pour accéder à cette variable, on va utiliser le nom de l’objet, un point et le nom de la variable :
class Pendu: |
class Pendu: |
Il est également possible de définir des fonctions à l’intérieur d’une classe (c’est-à-dire des méthodes) en utilisant le mot-clé def comme d’habitude mais avec l’indentation de la classe. Ensuite, pour appeler la méthode, il suffit d’utiliser la notation avec le point, comme pour les variables.
Dans l’exemple ci-contre, la classe Pendu possède une méthode lancer() !
Amélioration d’un code pour qu’il soit orienté objet : exemple du pendu
Tu trouveras ci-dessous des captures qui t’aideront à comprendre comment on peut passer d’un code « classique » à un code orienté objet. Tu peux aussi trouver le code du bot du pendu ici :
(Clique sur une image pour l’agrandir)
Note : Le code actuel du pendu orienté objet est différent de celui présenté dans ces images. Ces captures sont simplement fournies à titre d’exemple afin d’avoir un exemple concret du passage d’un code « classique » vers un code orienté objet.