Maison >développement back-end >Tutoriel Python >Parlons de Self en Python, qui est-ce ?
Quand tout le monde apprend Python orienté objet, il sera toujours confronté à une existence difficile à comprendre : soi-même.
Qui est ce self ? Pourquoi chaque méthode d'instance de classe a-t-elle un paramètre self ? Quel rôle joue-t-elle ?
"Tirons d'abord la conclusion : une fois la classe instanciée, self représente l'instance (l'objet) elle-même. "
La façon la plus simple de se comprendre est de se considérer comme "la carte d'identité de l'instance (objet)."
Les classes Python ne peuvent pas être utilisées directement. Ce n'est qu'en créant des instances (objets) qu'elles peuvent fonctionner, chaque instance (. object) est unique et peut appeler des méthodes et des propriétés de la classe. Les classes sont comme la possession de l'âme, permettant aux instances (objets) d'avoir leurs propres fonctions (auto).
Les débutants découvriront qu'il existe un paramètre fixe self dans la méthode de classe (méthode constructeur et méthode d'instance). En fait, ce paramètre représente l'instance (objet) lui-même, tout comme une carte d'identité. Utilisez la carte d'identité pour appeler la méthode de classe.
Analogie avec les êtres humains, les êtres humains sont une classe Python, chaque personne représente une instance (objet) et la carte d'identité de chaque personne se représente en Python. Tout le monde peut utiliser sa carte d'identité pour aller à l'université ou passer l'université. train à grande vitesse , Séjourner dans un hôtel... (méthode) et les instances (objets) en Python peuvent également appeler des méthodes de classe avec self.
Ce qui précède utilise une analogie pour expliquer la signification de self. En dernière analyse, self représente l'instance elle-même. "Lorsqu'une instance (objet) appelle une méthode de classe, l'objet utilisera sa propre référence comme première. Les paramètres sont automatiquement transmis à la méthode, et le premier paramètre est self. "
Et self n'est qu'une manière conventionnelle d'écrire. Vous pouvez utiliser n'importe quel autre nom pour remplacer self, ce qui ne changera pas la signification du code, mais nous généralement, ne faites pas ça.
Pour mieux illustrer le rôle de soi, prenons un exemple. Il y a une classe d'étudiants ci-dessous :
class Students: # 构造方法 def __init__(self,name): self.name = name # 实例方法 def study(self,examination_results): self.examination_results = examination_results print("同学{}的考试分数是{}".format(self.name,self.examination_results)) print("该实例对象的地址是{}".format(self))
Prenons d'abord un exemple de student_a.
studend_a = Students('studend_a') print(studend_a.name)
Le résultat s'imprime : student_a.
Prenons un autre exemple student_b.
studend_b = Students('studend_b') print(studend_b.name)
Le résultat s'imprime : student_b.
On peut voir que les instances (objets) sont différentes et les résultats imprimés sont également différents. Lorsque la classe est instanciée, self.name est en fait égal à l'instance (object).name.
Prenons le code tout à l'heure comme exemple. Appelons la méthode d'instance à l'intérieur, et self sera imprimé, ce qui le rendra plus évident.
Instance student_a :
studend_a = Students('studend_a') print(studend_a.study(80))
Résultat de sortie :
La note à l'examen de l'étudiant student_a est de 80. L'adresse de l'objet instance est .
Instance student_b :
studend_b = Students('studend_b') print(studend_b.study(80))
Résultat de sortie :
La note à l'examen de l'étudiant student_b est de 80. L'adresse de cet objet d'instance est .
Vous pouvez clairement voir que le soi imprimé par les deux instances est différent, car le soi représente l'instance (l'objet) lui-même.
En prenant l'instance student_b comme exemple, lors de l'impression de soi, les informations d'objet suivantes apparaissent.
<__main__.students object at>.
Si vous imprimez à nouveau student_b, le même résultat apparaîtra.
print(student_b)
Sortie :
<__main__.students object at>.
Est-il clair à ce stade qu'une fois la classe instanciée, self représente l'instance (objet) elle-même.
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!