Méthodes d'instance vs statiques vs classes en Python Les différences importantes
Les méthodes Python peuvent souvent être déroutantes 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.
Connaître les différences n'est pas toujours nécessaire pour coder des scripts Python de base, mais une fois que vous passez à la POO, les différences peuvent apporter de grands changements..
Si vous débutez dans Python, ou si vous souhaitez simplement expérimenter sans rien installer, assurez-vous de visiter les shells interactifs en ligne Python. Essayez Python dans votre navigateur avec ces shells interactifs gratuits. Essayez Python dans votre navigateur avec ces interactifs gratuits en ligne Shells Que vous examiniez ces exemples Python ou que vous examiniez les bases des tableaux et des listes, vous pouvez tester le code directement dans votre navigateur. Voici les meilleurs interprètes en ligne Python que nous avons trouvés. Lire la suite .
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'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 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 on ressemble en Python:
class DecoratorExample: "" "Exemple de classe" "" def __init __ (self): "" "Exemple d'installation" "" print ('Hello, World!') @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 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'avez 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 en tant que 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 aux données ou aux méthodes pouvant résider dans votre classe. Vous ne pourrez pas y accéder sans passer par vous-même.
Enfin, les méthodes d'instance étant 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:
class DecoratorExample: "" "Exemple de classe" "" def __init __ (self): "" "Exemple de configuration" "" print ('Hello, World!') self.name = 'Decorator_Example' def exemple_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 est appelé, vous n'avez pas à passer vous-même en-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 à une 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:
class DecoratorExample: "" "Exemple de classe" "" def __init __ (self): "" "Exemple de configuration" "" print ('Hello, World!') @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écorateur a été utilisé pour dire à 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) 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 n'ont pas besoin soi comme argument, mais ils ont besoin d'un paramètre appelé cls. Cela signifie classe, et comme self, est automatiquement passé par Python.
Les méthodes de classe sont créées à l'aide du @classmethod décorateur.
class DecoratorExample: "" "Exemple de classe" "" def __init __ (self): "" "Exemple de configuration" "" print ('Hello, World!') @classmethod def exemple_function (cls): "" "Cette méthode est une classe method! "" "print ('Je suis une méthode de classe!') cls.some_other_function () @staticmethod def some_other_function (): print ('Hello!') de = DecoratorExample () de.example_function ()
Les méthodes de classe sont peut-être les types de méthodes 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 principe 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 compétence importante à connaître et peut aider à rendre votre code plus facile à résoudre et à réutiliser ultérieurement..
En résumé:
- 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.
- Méthodes statiques: Impossible d'accéder à autre chose dans la classe. Code totalement autonome.
- 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 cherchiez, alors pourquoi ne pas jeter un œil à ces cours pour passer de Python débutant à pro 5 Cours qui vous mèneront de Python Débutant à Pro 5 cours Passez de débutant à professionnel de Python Ces cinq cours vous apprendront tout sur la programmation en Python, l’une des langues les plus en vogue actuellement. Lire la suite ? Ces 5 sites Web sont également intéressants pour les débutants en Python. Si vous souhaitez utiliser Python dans la réalité, mais vous vous ennuyez du Raspberry Pi, que diriez-vous de notre guide pour contrôler Arduino avec Python Comment programmer et contrôler un Arduino avec Python Comment programmer et contrôler un Arduino avec Python Malheureusement, il Il est impossible de programmer directement un Arduino en Python, mais vous pouvez le contrôler via USB en utilisant un programme Python. Voici comment. Lire la suite ?
En savoir plus sur: Programmation, Python.