Python est un langage de programmation orienté objet : cela signifie qu’en Python, tout est objet ! Vous allez voir dans ce chapitre ce que cela signifie et comment vous pouvez l’exploiter de façon concrète. Commencez par regarder quelques objets issus de la vie de tous les jours, comme des stylos, livres, smartphones, ordinateurs, etc.
Des objets peuvent avoir des formes et caractéristiques bien diverses, mais vous pouvez classer différentes versions d’un même objet dans une catégorie ou un groupe. C’est pourquoi vous n’avez aucun mal à reconnaître une chaise dans un magasin, par exemple, bien qu’elle puisse avoir une apparence (forme, couleur, etc.) très variable d’un modèle à un autre.
C’est en observant les points communs entre différents objets que vous êtes capable, mentalement, de classer les objets dans un même groupe ou une même catégorie !
Par exemple, il y a différents types de livres, mais ils ont tous un titre, un auteur, une quatrième de couverture, etc. Tous les livres partagent différents attributs qui vous permettent de les classer dans une catégorie bien identifiée : celle des livres.
Les classes : des modèles d’objets
En programmation, cette notion de groupe ou de catégorie d’objet est appelée une classe. Une classe est en quelque sorte le schéma de construction d’un objet qui va définir les caractéristiques de tous les objets de ce type et leurs fonctionnalités. À partir de cette classe, vous allez pouvoir créer différents modèles d’un objet.
Prenons un exemple concret avec une classe Voiture. Le plan d’une voiture peut être défini par :
ses caractéristiques, appelées attributs : elle a forcément 4 roues, une couleur, une forme, une puissance moteur, etc. ;
ses fonctionnalités, appelées méthodes : elle peut rouler, freiner, etc.
Ainsi, à partir de ce plan, vous pouvez créer différents modèles de voiture :
un familiale classique, de couleur verte, de puissance moyenne (110 ch) ;
une voiture de sport, rouge, relativement puissante (180 ch) ;
une petite voiture citadine bleue, peu puissante (90 ch) ;
etc.
Et peu importe le modèle de la voiture, elles sont toutes capables de rouler ou freiner, mais pas avec la même performance !
En résumé, une classe correspond au plan d’un objet, définissant ses attributs et ses méthodes. À partir d’une même classe, on peut donc créer plusieurs objets d’un même type, mais aux attributs différents : on appelle cela des instances de classe.
Focus sur les méthodes
Comme nous l’avons dit précédemment, en Python, tout est objet. C’est-à-dire que, sans le savoir, depuis le début de ce cours, vous manipulez des objets ! Considérons les lignes de code suivantes pour illustrer cela :
var1 = 14
var2 = 1031
Vous avez ici déclaré deux variables nommées var1
et var2
, contenant les valeurs 14 et 1.031. En réalité, vous avez créé deux instances de la classe int, deux objets ayant chacun un seul attribut : sa valeur. Il en est de même pour les floats ou les strings : chaque fois que vous créez une variable de l’un de ces types, vous créez en réalité des objets en Python ayant pour attribut la valeur que vous leur assignez.
Nous avons parlé jusque là des attributs, il est temps à présent de voir à quoi correspondent les méthodes. Une méthode de classe est une fonction qui n’est disponible que pour les différentes instances de cette classe. Si par exemple on considère la classe Voiture présentée ci-dessus ayant une méthode rouler(), et une classe Avion ayant pour méthode voler(), vous conviendrez assez logiquement qu’un avion ne peut pas rouler et une voiture voler. Il en va de même pour nos différents objets !
L’utilisation d’une méthode est toujours réalisée via la notation nomVariable.méthode()
. Par exemple, les strings ont une méthode appelée lower()
qui va transformer l’ensemble du texte contenu dans un objet, en minuscules. Voilà comment l’utiliser :
De la même façon qu’avec les fonctions, les méthodes de classes peuvent prendre des paramètres.
Les méthodes de chaînes de caractères
Lors des différentes analyses de données que vous serez amené à réaliser, vous allez forcément à un moment donné être confronté à des variables textuelles. Vous avez déjà vu comment changer votre string en minuscules, mais vous pouvez également avoir besoin de remplacer certains mots spécifiques, de formater le texte d’une certaine façon, etc.
Python a mis en place de nombreuses méthodes pour nous permettre de faire tout cela. Voici les plus courantes :
upper()
: retourne l’ensemble du texte en majuscules ;capitalize()
: retourne l’ensemble du texte en minuscules avec la première lettre en majuscule ;replace(old, new)
: cette méthode prend deux arguments. old correspond au(x) caractère(s) remplacé(s), new correspond au(x) caractère(s) remplaçant(s) ;find(chaîne)
: retourne soit l’indice de la première occurrence de la chaîne passée en argument, soit -1 si elle ne la trouve pas.
Voici quelques exemples d’utilisation de ces méthodes :
Comme vous pouvez le noter ici, notamment avec les lignes qui concernent la variable a
, les méthodes vues ci-dessus ne modifient pas l’objet initial ! Elles ne font que retourner le résultat de la méthode appliquée à l’objet. Vous aurez régulièrement à réaffecter ce résultat à la variable initiale, lorsque vous souhaiterez la modifier directement.
Essayez par vous-même :
Manipulez vous mêmes des objets dans l'exercice suivant.
Vous trouverez la correction ici même.
En résumé
Une classe est un plan de construction d’un objet.
Une variable est une instance de classe, ou un objet.
Un objet est défini par ses attributs.
Toutes les instances d’une classe ont accès aux mêmes méthodes via la notation
.
.Une méthode, tout comme une fonction, ne modifie généralement pas l’objet initial.
Dans la prochaine partie, nous verrons un peu plus en détail comment organiser votre code via différentes structures et objets complexes.