Maison  >  Article  >  développement back-end  >  Méthodes d'instance ou de classe en Python : quand devez-vous utiliser \"self\" et \"cls\" ?

Méthodes d'instance ou de classe en Python : quand devez-vous utiliser \"self\" et \"cls\" ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 03:01:28278parcourir

  Instance vs. Class Methods in Python: When Should You Use

Plongée dans les nuances des méthodes de classe et d'instance : au-delà de soi par rapport aux Cls

La proposition d'amélioration de Python (PEP) 8 suggère l'utilisation de "self" comme premier argument dans les méthodes d'instance et "cls" comme premier argument dans les méthodes de classe. Cette distinction découle des différents rôles que jouent ces méthodes dans le travail avec les instances et les classes.

Méthodes d'instance : l'avantage personnel

Les méthodes d'instance sont invoquées sur les instances d'un classe. Ils interagissent généralement avec des attributs et un comportement spécifiques de cette instance particulière. Le premier paramètre de ces méthodes est self, qui représente l'instance sur laquelle la méthode est appelée.

Par exemple, la classe suivante définit une méthode d'instance « introduire » :

<code class="python">class Inst:
    def __init__(self, name):
        self.name = name

    def introduce(self):
        print("Hello, I am %s, and my name is %s" % (self, self.name))</code>

Lorsque nous créons une instance de la classe Inst et appelons sa méthode "introduce", l'instance elle-même est passée en paramètre self, nous permettant d'accéder à ses attributs (dans ce cas, l'attribut "name").

Méthodes de classe : adoption de Cls

Les méthodes de classe, en revanche, opèrent sur la classe elle-même plutôt que sur des instances individuelles. Ils nous permettent de modifier ou d'inspecter la structure ou le comportement de la classe. Le premier paramètre de ces méthodes est cls, qui représente la classe sur laquelle la méthode est appelée.

L'exemple suivant illustre une méthode de classe :

<code class="python">class Cls:
    @classmethod
    def introduce(cls):
        print("Hello, I am %s!" % cls)</code>

Cette méthode ne nécessite pas une instance car elle n'interagit pas avec des attributs d'objet spécifiques. Au lieu de cela, il opère sur la classe elle-même, fournissant des informations sur sa structure.

Les méthodes de classe sont particulièrement utiles lors de l'héritage d'une classe parent, car elles permettent à la classe enfant de modifier ou d'étendre le comportement de la classe parent. Par exemple, la sous-classe suivante remplace la méthode "introduce" de la classe Cls :

<code class="python">class SubCls(Cls):
    pass

SubCls.introduce()
# outputs: Hello, I am <class 'SubCls'></code>

En utilisant "cls" comme premier paramètre, la méthode "introduce" peut être appelée directement sur la sous-classe, permettant pour définir son propre comportement tout en accédant aux propriétés héritées de la classe parent.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn