Plonger dans les nuances des méthodes de classe et d'instance : au-delà de soi contre 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 » :
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))
Lorsque nous créons une instance de la classe Inst et appelons sa méthode "introduce", le 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 : Embracing Les méthodes Cls
Class, 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 :
class Cls:
@classmethod
def introduce(cls):
print("Hello, I am %s!" % cls)
Cette méthode ne nécessite pas d'instance car elle n'interagit pas avec des attributs d'objet spécifiques. Au lieu de cela, elle 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 :
class SubCls(Cls):
pass
SubCls.introduce()
# outputs: Hello, I am
En utilisant "cls" comme premier paramètre, la méthode "introduce" peut être appelée directement sur la sous-classe, lui permettant de définir son propre comportement tout en j'accède toujours aux propriétés héritées de la classe parent.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3