FRFAM.COM >> Famille >> Technologie &Innovation >> Informatique

Méthodes d'instance, statiques et de classe en Python :les différences importantes

Les méthodes Python peuvent souvent prêter à confusion une fois que vous vous lancez dans la programmation orientée objet (POO). 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 .

Connaître les différences n'est pas toujours nécessaire pour coder des scripts Python de base, mais une fois que vous avancez dans la POO, les différences peuvent faire un grand changement.

Si vous débutez avec Python ou si vous souhaitez simplement expérimenter sans rien installer, assurez-vous de visiter ces shells Python interactifs en ligne.

Avant de commencer :Comprendre les motifs de décoration

Avant d'examiner les différences, il est important de comprendre un modèle de conception appelé modèle de décorateur , ou simplement appelé 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 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 ici 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 modèle de décorateur est le moyen préféré de Python pour définir des méthodes statiques ou de classe. Voici à quoi cela ressemble en Python :

class DecoratorExemple :
""" Exemple de classe """
def __init__(self):
""" Exemple de configuration """
print('Bonjour, le monde !')
@méthodestatique
def example_function() :
""" Cette méthode est décorée ! """
print('Je suis une fonction décorée !')

de =DécorateurExemple()
de.example_function()

Les décorateurs doivent précéder immédiatement une déclaration de fonction ou de classe. Ils commencent par le @ signe, et contrairement aux méthodes normales, vous n'avez pas besoin de mettre des 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 classes, mais vous n'aurez rien à faire de tout 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. Ceux-ci sont ainsi appelés car ils peuvent accéder aux données uniques de leur instance. Si vous avez deux objets créés chacun à partir d'une classe de voiture, ils peuvent avoir chacun 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 vous n'avez pas besoin de le passer à chaque fois. Self est un autre terme spécial 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 si vous indiquez le contraire à Python.

Voici un exemple :

class DecoratorExemple :
""" Exemple de classe """
def __init__(self):
""" 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 =DécorateurExemple()
de.example_function()

Le nom la variable est accessible via self . Notez que lorsque example_function est appelé, vous n'avez pas à passer self---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'êtes pas obligé d'utiliser vous-même , et vous n'avez même pas besoin d'instancier une instance, vous pouvez simplement appeler votre méthode :

class DecoratorExemple :
""" Exemple de classe """
def __init__(self):
""" Exemple de configuration """
print('Bonjour, le monde !')
@méthodestatique
def example_function() :
""" Cette méthode est une méthode statique ! """
print('Je suis une méthode statique !')

de =DécorateurExample.example_function()

La @staticmethod decorator 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. Ils n'ont pas besoin (et ne peuvent pas) 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 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 n'ont pas besoin de self 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 de @classmethod décorateur.

class DecoratorExemple :
""" Exemple de classe """
def __init__(self):
""" 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.une_autre_fonction()
@méthodestatique
def some_other_function() :
print('Bonjour !')

de =DécorateurExemple()
de.example_function()

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

Quand utiliser chaque type de méthode

Cela peut sembler une décision difficile et intimidante de choisir entre les types de méthodes en Python, mais vous y arriverez bientôt avec un peu de pratique.

Même si vous n'écrivez que de minuscules scripts pour vous amuser, apprendre une autre fonctionnalité POO de Python est une excellente compétence à connaître et peut aider à rendre votre code plus facile à dépanner et plus facile à réutiliser à l'avenir.

En résumé :

  1. Méthodes d'instance : Le type de méthode le plus courant. Capable d'accéder aux données et aux 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.

Si ce tutoriel était un peu avancé, ou pas tout à fait ce que vous recherchiez, alors pourquoi ne pas jeter un œil à ces cours pour passer de Python débutant à pro ? Ces 5 sites Web sont également parfaits pour les débutants en Python. Si vous voulez une utilisation physique et réelle de Python, mais que vous en avez assez du Raspberry Pi, que diriez-vous de notre guide pour contrôler Arduino avec Python ?


[]