Méthodes d’instance, statiques ou de classe en Python : Les différences importantes

La programmation orientée objet (POO) est l’un des paradigmes les plus populaires. Mais certains concepts impliqués dans la POO sont difficiles à saisir. Il existe trois types de méthodes en Python, et leurs différences et objectifs peuvent souvent prêter à confusion.

Pour écrire un bon code Python OOP, vous devez comprendre la différence entre les méthodes d’instance, les méthodes statiques et les méthodes de classe.

Les 3 types de méthodes en Python

Il existe trois types de méthodes en Python : les méthodes d’instance, les méthodes statiques et les méthodes de classe.

Il n’est pas toujours nécessaire de tenir compte de ces différences pour chaque script Python de base que vous écrivez. Mais lorsque vous utilisez la POO en Python pour écrire du code plus avancé, les différences peuvent avoir des effets importants.

Comprendre les modèles de décorateurs

Avant d’examiner les différences, il est important de comprendre un modèle de conception connu sous le nom de modèle de décorateur.

Les décorateurs semblent complexes, mais il n’y a rien à craindre. Les décorateurs sont simplement des fonctions. Vous pouvez les écrire vous-même, ou utiliser celles incluses dans les bibliothèques, ou la bibliothèque standard de Python.

Comme toute fonction, les décorateurs exécutent une tâche. La différence est que les décorateurs appliquent une logique ou modifient le comportement d’autres fonctions. Ils constituent un excellent moyen de réutiliser le code et peuvent aider à séparer la logique en préoccupations individuelles.

Voir aussi :  L'architecture MVT de Django expliquée

Le modèle du décorateur est le moyen préféré de Python pour définir des méthodes statiques ou de classe. Voici à quoi ressemble un décorateur en Python :

Les décorateurs doivent précéder immédiatement la déclaration d’une fonction ou d’une classe. Ils commencent par l’élément @ et contrairement aux méthodes normales, il n’est pas nécessaire de mettre des parenthèses à la fin, sauf si vous passez des arguments.

Il est possible de combiner des décorateurs, d’écrire les vôtres et de les appliquer à des classes, mais vous n’aurez pas besoin de le faire pour ces exemples.

Méthodes d’instance en Python

Les méthodes d’instance sont le type de méthodes le plus courant dans les classes Python. Elles sont appelées ainsi parce qu’elles peuvent accéder à des données uniques de leur instance. Si vous avez deux objets créés à partir d’une classe de voiture, chacun d’eux peut avoir des propriétés différentes. Ils peuvent avoir des couleurs, des tailles de moteur, des sièges, etc. différents.

Les méthodes d’instance doivent avoir self comme paramètre, mais il n’est pas nécessaire de le passer à chaque fois. Self est un autre terme spécial de Python. A l’intérieur de n’importe quelle méthode d’instance, vous pouvez utiliser self pour accéder aux données ou aux méthodes qui se trouvent dans votre classe. Vous ne pourrez pas y accéder sans passer par la méthode self. Cependant, en plus de soi vous pouvez également inclure d’autres paramètres.

Voir aussi :  Comment documenter le code JavaScript à l'aide de JSDoc

Enfin, les méthodes d’instance étant les plus courantes, aucun décorateur n’est nécessaire. Lorsque vous créez une classe Python, ses méthodes seront par défaut des méthodes d’instance.

Voici un exemple :

Les nom est accessible par l’intermédiaire de la variable self. Remarquez que, lorsque vous appelez exemple_fonction vous n’avez pas besoin de passer self in-Python le fait pour vous.

Méthodes statiques en Python

Les méthodes statiques sont des méthodes qui sont liées à une classe d’une manière ou d’une autre, mais qui n’ont pas besoin d’accéder à des données spécifiques à la classe. Vous n’avez pas besoin d’utiliser self et vous n’avez même pas besoin d’instancier une instance, vous pouvez simplement appeler votre méthode :

La méthode @staticmethod a été utilisé pour indiquer à Python que cette méthode est une méthode statique.

Les méthodes statiques sont idéales pour les fonctions utilitaires, qui effectuent une tâche de manière isolée. Elles n’ont pas besoin (et ne peuvent pas) accéder aux données de la classe. Elles doivent être complètement autonomes et ne fonctionner qu’avec les données transmises en tant qu’arguments. Vous pouvez utiliser une méthode statique pour additionner deux nombres ou imprimer une chaîne de caractères donnée.

Méthodes de classe en Python

Les méthodes de classe sont le troisième et dernier type de méthode OOP à connaître. Les méthodes de classe connaissent leur classe. Elles ne peuvent pas accéder à des données d’instance spécifiques, mais elles peuvent appeler d’autres méthodes statiques.

Voir aussi :  Comment utiliser GitBook pour la documentation des API

Les méthodes de classe n’ont pas besoin de self comme argument, mais elles ont besoin d’un paramètre appelé cls. Ce paramètre correspond à classe et comme self il est automatiquement passé par Python.

Les méthodes de classe sont créées à l’aide de la méthode @classmethod décorateur.

Rappelez-vous que les méthodes d’instance peuvent manipuler l’état d’un objet et ont accès à la classe elle-même via le décorateur self. Les méthodes de classe, en revanche, ne peuvent pas accéder à l’instance d’une classe mais peuvent accéder à la classe elle-même. C’est la principale différence entre les méthodes de classe et les méthodes d’instance en Python.

Comme les méthodes de classe peuvent manipuler la classe elle-même, elles sont utiles lorsque vous travaillez sur des projets plus importants et plus complexes.

Quelle méthode Python utiliser ?

Choisir entre les différents types de méthodes en Python peut sembler une décision difficile et décourageante, mais vous vous y ferez vite avec un peu de pratique.

Même si vous n’écrivez que de petits scripts pour vous amuser, l’apprentissage d’une autre caractéristique OOP de Python est une excellente compétence, et peut aider à rendre votre code plus facile à dépanner, et plus facile à réutiliser à l’avenir.

Cliquez pour évaluer cet article !
[Total: Moyenne : ]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *