Les classes Python sont utilisées en programmation orientée objet (POO), pour favoriser la concision, la clarté et la modularité du code. Une classe Python est un bloc de code qui définit un type d'objet. Chaque type d'objet a des caractéristiques et des comportements déterminés : des variables et des fonctions. Tous les objets d'une classe disposent de ces variables et de ces fonctions, ce sont ses attributs. Pour illustrer avec un exemple du monde réel : les membres d'un club de sport sont abonnés ou invités, ils peuvent faire du sport ; c'est une classe Membre, avec une variable catégorie de membre et une fonction faire du sport.
Pour bien commencer avec les classes Python, il faut savoir comment manipuler les variables et les fonctions, et comprendre les piliers de la programmation orientée objet : encapsulation, héritage et polymorphisme.
Qu'est-ce qu'une classe en Python ?
Une classe Python est un bloc de code qui décrit les caractéristiques et les comportements d'un type d'objet, respectivement ses variables et ses fonctions. Tous les objets de la classe disposent de ces variables et de ces fonctions. Les classes Python sont utilisées en programmation orientée objet.
Pour se représenter une classe Python, il faut dessiner une boîte : l'en-tête porte le nom de la classe, une ligne décrit ses variables et une autre ligne décrit ses fonctions. Chaque objet qui possède vraisemblablement les attributs de la classe peut entrer dans la boîte. Dans cet exemple, la classe Animal permet de créer un chat, un chien et un lapin : on dit que le chat, le chien et le lapin sont des instances de la classe, c'est-à-dire qu'ils appartiennent au même type d'objet. Le poisson rouge, qui ne marche pas, ne peut pas, a priori, appartenir à cette classe.
Animal | |
Variables |
domestique poils |
Fonctions |
marche saute |
Pour aller plus loin dans l'utilisation des classes Python en POO, il faut s'intéresser au principe d'héritage. À partir d'une classe « mère », il est possible de créer des classes « enfants ». Un objet d'une classe enfant dispose alors des attributs de sa classe enfant et des attributs de la classe mère. Dans l'exemple, deux classes enfants permettent de distinguer les chats et les chiens, une classe enfant de la classe chien crée un objet de type chien guide d'aveugle. Sans qu'il soit besoin de le coder, l'objet chien guide d'aveugle est un animal domestique à poils, qui peut avoir une race et un âge, et qui est capable de marcher, de sauter et d'aboyer.
Chien | Chat | |
Variables |
race âge |
race âge |
Fonctions | aboie | miaule |
Chien guide d'aveugle | |
Variables | Taille |
Fonctions | Guide d'aveugle |
Pourquoi utiliser des classes en Python ?
Les classes sont utilisées en Python pour faire de la programmation orientée objet. Le principal intérêt des classes est de faciliter le travail du développeur, en clarifiant l'organisation du code. Le développeur peut en effet travailler isolément sur chaque classe, c'est-à-dire sur chaque type d'objet, sans risque de confusion. C'est le principe d'encapsulation, un pilier de la POO.
Illustration : les collaborateurs d'une entreprise ont chacun un nom. Créer une classe par métier dans l'entreprise permet d'utiliser la variable nom plusieurs fois, tout en faisant référence au métier spécifique du collaborateur. Chaque métier est un type d'objet distinct, qui peut être manipulé distinctement.
L'intérêt de l'encapsulation n'est pas évident de prime abord. Il se manifeste à mesure que le code Python se densifie et se complexifie.
Comment créer une classe en Python ?
Pour créer une classe en Python, il faut nommer la classe, puis renseigner les attributs du type d'objet : des variables et des fonctions. La syntaxe pour écrire une classe en Python est la suivante :
class Nomdeclasse
variable = valeur
def nomdeFonction(paramètres de la fonction) : description de la fonction
- Le terme « class » introduit une nouvelle classe Python.
- La classe a une variable notée « variable », qui prend une valeur.
- Pour attribuer un comportement aux objets de la classe, il faut définir une fonction avec « def ».
Utiliser une méthode Python appelée « init », et une fonction vide avec l'instruction « pass », permet d'avoir un code plus concis, plus clair et modulaire. En programmation orientée objet, ces pratiques sont mises en œuvre conformément au principe de polymorphisme.
1 - La méthode __init__
La méthode __init__ sert à attribuer à chaque objet de la classe une valeur d'attribut qui lui est propre. Dans l'exemple des collaborateurs d'une entreprise, chaque classe qui définit un métier utilise la variable nom. Tous les collaborateurs d'un même métier doivent appartenir à la classe, or chacun a un nom différent. Avec __init__, il est possible de créer une variable nom qui s'initialise pour chaque collaborateur.
Exemple de syntaxe Python avec la méthode __init__ :
class Commerciaux
def __init__(self, nom)
self.commercial_nom=nom
Ainsi, chaque instance de la classe Commerciaux, c'est-à-dire chaque nouveau commercial, peut avoir son propre nom.
2 - La fonction vide
Écrire une fonction vide dans une classe Python sert l'enjeu de polymorphisme de la POO. Avec une fonction vide dans une classe mère, une classe fille peut définir sa propre fonction : la classe fille hérite d'une fonction générique, qu'elle implémente en définissant un comportement spécifique.
Exemple de syntaxe Python avec une fonction vide :
class Animaux
def moyenCommunication(self) :
pass
L'instruction « pass » indique que la fonction ne produit aucun effet, le paramètre self indique que la fonction fait référence à la classe. Au moment de créer une classe fille de la classe Animaux, la classe Chien par exemple, il est alors possible d'écrire la valeur aboyer pour la fonction moyenCommunication.
gagnez du temps dans la gestion de votre code et de vos données.
téléchargez ce guide pour effectuer des vérifications et des changements en masse avec les regex et gagner en productivité.
Comment exécuter une classe Python ? 3 exemples
Une classe Python permet de raccourcir le code, de le clarifier et de le moduler. Au-delà de ces aspects liés à la POO, une classe Python est fonctionnelle. C'est-à-dire qu'elle permet de faire des choses quand elle est exécutée. Et chaque fois qu'une nouvelle instance de classe est créée, elle s'exécute de même.
Afficher le résultat d'une somme
Le langage Python peut automatiser des calculs mathématiques : faire la somme de deux nombres, par exemple. Le développeur crée une classe Calcul avec deux variables de nombres et une fonction d'addition. L'utilisateur entre deux nombres et obtient leur somme. Le code pour exécuter ce calcul peut s'écrire ainsi :
class Calcul:
def __init__(self,a,b):
self.nombre1, self.nombre2 = a , b
def somme(self):
return (self.nombre1 + self.nombre2)
exemple = Calcul(3,8)
print( "Le résultat est :" , exemple.somme() )
Calculer des aires et des périmètres
Le développeur crée une classe Rectangle, qui a des variables de largeur et de longueur et des fonctions de calcul de périmètre et d'aire. Quand un utilisateur entre les mesures d'un rectangle, cela crée une nouvelle instance de la classe et le périmètre et l'aire sont calculés automatiquement. Le code pour exécuter cette classe ressemble à cela :
class Rectangle:
def __init__(self,a,b):
self.longueur, self.largeur = a , b
def perimetre(self):
return 2 * (self.longueur + self.largeur)
def aire(self):
return self.longueur * self.largeur
fig = Rectangle(1,2)
print( "Le périmétre est :" , fig.perimetre() )
print( "L'aire est :" , fig.aire() )
Déterminer si un rectangle est carré
La structure conditionnelle if…else de Python, utilisée dans la classe précédente, permet de dire si le rectangle est ou non un carré. Le code ressemble à cela :
class Rectangle:
def __init__(self,a,b):
self.longueur, self.largeur = a , b
def is_square(self):
return self.longueur == self.largeur
fig = Rectangle(1,2)
if fig.is_square():
print( "C'est un carré" )
else:
print("Ce n'est pas un carré")
Pour aller plus loin, découvrez comment effectuer des vérifications et des changements en masse dans votre code ou vos données en téléchargeant le guide sur les regex ; ou découvrez le CMS de HubSpot.