Maison > développement back-end > Tutoriel Python > python soi, qu'est-ce que cela signifie

python soi, qu'est-ce que cela signifie

(*-*)浩
Libérer: 2020-09-18 13:48:00
original
37421 Les gens l'ont consulté

Self signifie "soi". En Python, il représente une instance d'une classe, pas une classe. Self ne peut être trouvé que dans les méthodes de classe. Il n'est pas nécessaire que les fonctions ou méthodes indépendantes aient self ; Le nom de soi n'est pas nécessaire. Vous pouvez le définir comme a ou b ou tout autre nom, mais il est conventionnel et peut réduire la difficulté de compréhension.

python soi, qu'est-ce que cela signifie

Tout d'abord, nous devons comprendre pourquoi le mot self est utilisé dans les classes Python. Pourquoi ne pas utiliser des noms comme "zhangsan" et "lisi". cela doit avoir son intention.

self représente une instance d'une classe, pas une classe.

class Test:
    def prt(self):
        print(self)
        print(self.__class__)
 
t = Test()
t.prt()
Copier après la connexion

Le résultat de l'exécution est le suivant :

<__main__.Test object at 0x000000000284E080>
<class &#39;__main__.Test&#39;>
Copier après la connexion

D'après l'exemple ci-dessus, il est évident que self représente une instance d'une classe. Et self.class pointe vers la classe.

Le premier paramètre de la méthode dans la classe doit être self, sinon l'instance ne peut pas appeler correctement la méthode dans la classe, c'est-à-dire si le premier paramètre de la méthode n'est pas self (au sens large). sens), alors cette méthode n'a aucune valeur car l'instance ne peut pas l'appeler. Je ne sais vraiment pas à quoi sert une méthode qui ne peut pas être appelée.

Remarque : Remplacez self par ceci, le résultat sera le même, mais il est préférable d'utiliser le self conventionnel en Python.

Lors de l'héritage, l'instance transmise est l'instance transmise, et non l'instance de la classe dans laquelle self est défini.

class Parent:
    def pprt(self):
        print(self)
 
class Child(Parent):
    def cprt(self):
        print(self)
c = Child()
c.cprt()
c.pprt()
p = Parent()
p.pprt()
Copier après la connexion

Les résultats d'exécution sont les suivants :

<__main__.Child object at 0x0000000002A47080>
<__main__.Child object at 0x0000000002A47080>
<__main__.Parent object at 0x0000000002A47240>
Copier après la connexion

Explication :

Il ne devrait y avoir aucun problème de compréhension lors de l'exécution de c.cprt(), qui fait référence à un instance de la classe Child.

Mais lors de l'exécution de c.pprt(), c'est équivalent à Child.pprt(c), donc self fait toujours référence à une instance de la classe Child Puisque la méthode pprt() n'est pas définie dans self, l'héritage est hérité En regardant dans l'arborescence, j'ai découvert que la méthode pprt() est définie dans la classe parent Parent, elle sera donc appelée avec succès

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal