Python est langage de développement devenu très populaire dans le développement d’application. Nous allons continuer à avancer en regardant les classes et objets en python et comment les manipuler.
Précédent tutoriel : #8 – les boucles
Ce tutoriel est également disponible en vidéo :
Les classes et objets
Python fait parti des langages de programmation objet. Un concept incontournable dans les langages de développement récents. Un objet est un conteneur d’éléments permettant également de proposer des fonctions afin d’avoir la possibilité de créer des comportements dynamiques.
Ceci permet d’avoir la possibilité de créer des comportements contrairement aux listes et dictionnaires qui doivent être manipulé extérieurement.
Définir une classe
Une classe se définit tout simplement comme ceci :
class Fruit:
Un peu comme dans un dictionnaire, il sera possible d’y insérer des éléments. Cependant leur déclaration est différente :
class Fruit:
nom = ''
poids = 0
Nous définissons ici le nom de nos éléments et on leur affecte une valeur par défaut.
Pour le moment, si vous avez suivi les précédents tutoriels, vous ne voyez pas trop la différence avec un dictionnaire dans le concept. Nous allons donc voir ce qui différencie énormément les deux à partir de maintenant.
Dans nos classes, il est possible de créer des comportements en ajoutant des fonctions à l’intérieur de celle-ci. Certaines fonctions dites « magiques » se déclenchent automatiquement selon une action.
La plus utilisée est la fonction __init__ qui se déclenche à chaque fois qu’on va créer un objet à partir d’une classe.
Avant de parler de cette fonction il faut parler de ce mot « objet » indispensable à bien comprendre. Quand nous définissons une classe, nous pouvons créer un ou plusieurs objets à partir de celle-ci.
- Banane est un Fruit
- Pomme est un Fruit
Pomme et Banane ont des caractéristiques similaires comme vous pouvez le deviner. Cependant les deux restent des choses différentes. Grâce à notre classe Fruit, nous allons donc pouvoir créer 2 objets différents (Banane et Pomme) ayant des caractéristiques similaires.
Nous verrons après comment créer ces objets à partir de la classe Fruit.
Revenons à cette fonction __init__ qui va se déclencher à chaque fois qu’on va créer un nouvel objet à partir de la classe. Celle-ci peut être par exemple très pratique pour remplir nos éléments « nom » et « poids » qui sont des caractéristiques similaires de chaque Fruit mais qui auront des valeurs différentes.
class Fruit:
nom = ''
poids = 0
def __init__ (self, nom, poids):
self.nom = nom
self.poids = poids
Nous devons décortiquer la déclaration de notre fonction __init__ car nous découvrons de nouveaux éléments.
- comme pour une fonction classique, il faut déclarer notre fonction avec le mot clé def
- Le premier paramètre self de la fonction __init__ est obligatoire et permet de retourner une instance de l’objet lui même (en gros, self permet de manipuler l’objet créé à partir de la classe elle-même)
- nom et poids sont des paramètres internes à la fonction. Attention ! Ces paramètres même si ils ont le même nom que les paramètres de la classe, représentent des variables internes à la fonction et pas les paramètres de la classe
- self.nom et self.poids permettent cette fois d’accéder aux paramètres de la classe. self.nom = nom permet donc d’affecter la valeur de la fonction à la valeur du paramètre de la classe.
Pour atteindre les paramètres de la classe elle même, il faudra donc toujours utiliser self ! Si vous oubliez self, vous ne manipulerez qu’un paramètre de la fonction. Un paramètre de la fonction est détruit quand le programme a terminé d’exécuter la fonction alors qu’un paramètre de classe reste disponible tant que l’objet n’est pas détruit. La portée est totalement différente.
Créer un objet à partir de ma classe
Je parlais de création d’objet précédemment, je vais donc vous donner à présent de quoi créer un objet à partir de cette classe.
Apprenons à partir de l’exemple ci-dessous :
class Fruit:
nom = ''
poids = 0
def __init__ (self, nom, poids):
self.nom = nom
self.poids = poids
banane = Fruit("banane", 50)
En faisant Fruit(« banane », 50), je vais donc créer un objet de type Fruit auquel j’envoie deux paramètres qui grâce à la fonction __init__ automatiquement déclenché va insérer ces valeurs dans les paramètres de la classe. N’oublions pas que self est obligatoire et qu’on ne spécifie lors de la création d’objet qu’à partir du deuxième paramètre.
Evidemment, il est possible d’avoir accès aux paramètres de la classe de cette façon en utilisant l’opérateur . (point) :
class Fruit:
nom = ''
poids = 0
def __init__ (self, nom, poids):
self.nom = nom
self.poids = poids
banane = Fruit("banane", 50)
print(banane.nom)
Ceci affichera ce qu’on a passé à « nom » soit « banane » dans l’exemple suivant.
Nous pouvons à partir d’une même classe, créer deux objets différents comme je l’expliquais précédemment :
class Fruit:
nom = ''
poids = 0
def __init__ (self, nom, poids):
self.nom = nom
self.poids = poids
banane = Fruit("banane", 50)
pomme = Fruit("pomme", 100)
Des classes plus complexes
bien qu’il existe des fonctions par défaut sur les classes, il est possible de créer nos fonctions personnalisée. Voici un exemple avec des fonctions personnalisée qui permettrait d’insérer soit même les paramètres à la demande.
class Fruit:
nom = ''
poids = 0
def setName(nom):
self.nom = nom
def setWeight(poids):
self.poids = poids
banane = Fruit()
banane.setName("banane")
banane.setWeight(50)
Ici, je n’utilise plus la fonction __init__ mais deux fonctions pour insérer les paramètres. Dans l’exemple suivant, ça semble fastidieux mais ça peut être fort utile de bien comprendre les différentes possibilités que propose le Python.
On utilisera l’opérateur . (point) pour faire appel à une des fonctions de la classe comme vous le voyez dans l’exemple précédent. Si vous avez bien assimilez le concept des fonctions vu dans un chapitre précédent, vous ne devriez pas voir de difficulté dans ce dernier exemple.
Conclusion – Classes et objets
Nous avons vu un premier jet de création de classes et objets en Python qui sont indispensables à connaitre pour faire des programmes de qualité. Nous irons plus loin dès le prochain chapitre dans notre apprentissage sur le python qui proposent encore de nombreux secrets.
Chapitre suivant : #10 – objets, notions avancées
Soyez le premier à commenter