Accueil

Méthodes d'instance vs statiques vs classes en Python: Les types de méthode Différences importantes

Added 2018-06-20


Les méthodes Python peuvent souvent être source de confusion une fois que vous entrez dans la programmation orientée objet (OOP). Ce guide couvre les trois principaux types de méthodes en Python.

Les 3 types de méthodes en Python

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

Il n’est pas toujours nécessaire de connaître les différences pour coder des scripts Python de base, mais une fois que vous passez à la POO, les différences peuvent apporter de grands changements.

Avant de commencer: Comprendre les modèles de décorateur

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

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

Comme toute fonction, les décorateurs effectuent 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.

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


classe DecoratorExample:
  "" "Exemple de classe" ""
  def __init __ (auto):
    "" "Exemple de configuration" ""
    print ('Bonjour le monde!')

  @staticmethod
  def example_function ():
    "" "Cette méthode est décorée!" ""
    print ('Je suis une fonction décorée!')
 
de = DecoratorExample ()
de.example_function ()

Les décorateurs doivent immédiatement précéder une déclaration de fonction ou de classe. Ils commencent par le @  signe, et contrairement aux méthodes normales, vous ne devez pas mettre de parenthèses à la fin, sauf si vous passez des arguments.

Il est possible de combiner plusieurs décorateurs, d’écrire les vôtres et de les appliquer également aux cours, mais vous n’aurez pas besoin de faire cela 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. Celles-ci s'appellent ainsi parce qu'elles peuvent accéder aux données uniques de leur instance. Si vous avez deux objets créés à partir d'une classe de voiture, ils peuvent avoir des propriétés différentes. Ils peuvent avoir différentes couleurs, tailles de moteur, sièges, etc.

Les méthodes d'instance doivent avoir soi  comme paramètre, mais vous n’avez pas besoin de le transmettre à chaque fois. Self est un autre terme spécial de Python. Dans n'importe quelle méthode d'instance, vous pouvez utiliser self pour accéder à toutes les données ou méthodes pouvant résider dans votre classe. Vous ne pourrez pas y accéder sans passer par vous-même.

Enfin, comme les méthodes d’instance sont les plus courantes, aucun décorateur n’est nécessaire. Toute méthode que vous créez sera automatiquement créée en tant que méthode d'instance, sauf indication contraire de votre part à Python.

Voici un exemple:


classe DecoratorExample:
  "" "Exemple de classe" ""
  def __init __ (auto):
    "" "Exemple de configuration" ""
    print ('Bonjour le monde!')
    self.name = 'Decorator_Example'

  def example_function (self):
    "" "Cette méthode est une méthode d'instance!" ""
    print ('Je suis une méthode d'instance!')
    print ('Mon nom est' + self.name)
 
de = DecoratorExample ()
de.example_function ()

le prénom  la variable est accessible via soi . Notez que lorsque exemple_fonction  s’appelle, vous n’êtes pas obligé de vous passer de vous-même: Python le fait pour vous.

Méthodes statiques en Python

Les méthodes statiques sont des méthodes 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'êtes pas obligé d'utiliser soi , et vous n’avez même pas besoin d’instancier une instance, vous pouvez simplement appeler votre méthode:


classe DecoratorExample:
  "" "Exemple de classe" ""
  def __init __ (auto):
    "" "Exemple de configuration" ""
    print ('Bonjour le monde!')

  @staticmethod
  def example_function ():
    "" "Cette méthode est une méthode statique!" ""
    print ('Je suis une méthode statique!')
 
de = DecoratorExample.example_function ()

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

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

Méthodes de classe en Python

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

Les méthodes de classe ne sont pas nécessaires soi  comme argument, mais ils ont besoin d'un paramètre appelé cls . Cela signifie classe , et comme self, est automatiquement transmis par Python.

Les méthodes de classe sont créées à l'aide du @classmethod  décorateur.


classe DecoratorExample:
  "" "Exemple de classe" ""
  def __init __ (auto):
    "" "Exemple de configuration" ""
    print ('Bonjour le monde!')

  @classmethod
  def example_function (cls):
    "" "Cette méthode est une méthode de classe!" ""
    print ('Je suis une méthode de classe!')
    cls.some_other_function ()

  @staticmethod
    def some_other_function ():
    print ('Bonjour!')
 
de = DecoratorExample ()
de.example_function ()

Les méthodes de classe sont peut-être les types de méthode les plus déroutants des trois, mais elles ont leurs utilisations. Les méthodes de classe peuvent manipuler la classe elle-même, ce qui est utile lorsque vous travaillez sur des projets plus grands et plus complexes.

Quand utiliser chaque type de méthode

Cela peut sembler une décision difficile et décourageante de choisir entre les types de méthodes en Python, mais vous allez bientôt comprendre le mouvement avec un peu de pratique.

Même si vous n'écrivez que de petits scripts pour le plaisir, apprendre une autre fonctionnalité de la POO de Python est une grande compétence à connaître et peut aider à rendre votre code plus facile à résoudre et à réutiliser ultérieurement.

En résumé:

  1. Méthodes d'instance:  Le type de méthode le plus courant. Capable d'accéder aux données et propriétés propres à chaque instance.
  2. Méthodes statiques:  Impossible d'accéder à autre chose dans la classe. Code totalement autonome.
  3. Méthodes de classe:  Peut accéder à des méthodes limitées dans la classe. Peut modifier les détails spécifiques à la classe.





Nuage de tags

Choix de L'éditeur


Thomas Becket

Je suis un écrivain indépendant qui couvre la programmation et les logiciels.
Je suis étudiant en informatique et je m'intéresse à la programmation, aux logiciels et à la technologie
Gadgets technologiques et critiques 2019