Wenn jeder Python objektorientiert lernt, wird er immer auf eine Existenz stoßen, die schwer zu verstehen ist: sich selbst.
Wer ist dieses Selbst? Warum hat jede Klasseninstanzmethode einen Parameter?
„Lassen Sie uns zunächst die Schlussfolgerung ziehen: Nachdem die Klasse instanziiert wurde, repräsentiert das Selbst die Instanz (das Objekt) selbst.“
Der einfachste Weg, sich selbst zu verstehen, besteht darin, sich selbst als „die ID-Karte der Instanz (des Objekts)“ vorzustellen.
Python-Klassen können nicht direkt verwendet werden, indem Instanzen (Objekte) erstellt werden. Jede Instanz ( Objekt) ist eindeutig und kann Methoden und Eigenschaften der Klasse aufrufen. Klassen sind wie Seelenbesessenheit und ermöglichen es Instanzen (Objekten), ihre eigenen (Selbst-)Funktionen zu haben.
Anfänger werden feststellen, dass es in der Klassenmethode (Konstruktormethode und Instanzmethode) einen festen Parameter selbst gibt, genau wie eine ID-Karte Verwenden Sie die ID-Karte, um die Klassenmethode aufzurufen.
Analog zum Menschen sind Menschen eine Python-Klasse, jede einzelne Person repräsentiert eine Instanz (ein Objekt) und der Personalausweis jeder Person repräsentiert sich selbst in Python. Jeder kann seinen Personalausweis verwenden, um aufs College zu gehen oder die High-Tech-Klasse zu besuchen. Speed Rail, Übernachten in einem Hotel... (Methode) und Instanzen (Objekte) in Python können auch Klassenmethoden mit self aufrufen.
Das Obige verwendet eine Analogie, um die Bedeutung von self zu erklären. Letztlich stellt self die Instanz selbst dar: „Wenn eine Instanz (ein Objekt) eine Klassenmethode aufruft, verwendet das Objekt als erstes seine eigene Referenz.“ Parameter werden automatisch an die Methode übergeben, und der erste Parameter ist self. Und self ist nur eine herkömmliche Schreibweise. Sie können jeden anderen Namen verwenden, um self zu ersetzen, was die Bedeutung des Codes nicht ändert, aber wir Tun Sie dies im Allgemeinen nicht.
Um die Rolle des Selbst besser zu veranschaulichen, nehmen wir unten ein Beispiel:
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))
Nehmen wir zunächst ein Beispiel von student_a.
studend_a = Students('studend_a') print(studend_a.name)
Das Ergebnis wird ausgegeben: student_a.
Nehmen wir ein weiteres Beispiel, student_b.
studend_b = Students('studend_b') print(studend_b.name)
Das Ergebnis wird ausgegeben: student_b.
Es ist ersichtlich, dass die Instanzen (Objekte) unterschiedlich sind und auch die gedruckten Ergebnisse unterschiedlich sind. Wenn die Klasse instanziiert wird, ist self.name tatsächlich gleich der Instanz (object).name.
Nehmen wir den Code gerade als Beispiel. Rufen wir die darin enthaltene Instanzmethode auf, und self wird ausgedruckt, was es offensichtlicher macht.
Instanz student_a:
studend_a = Students('studend_a') print(studend_a.study(80))
Ausgabeergebnis:
Die Prüfungspunktzahl von Student student_a beträgt 80. Die Adresse des Instanzobjekts lautet
.<「main」.Students object at 0x00000129EB0F6A90>Instanz student_b:
studend_b = Students('studend_b') print(studend_b.study(80))
Ausgabeergebnis:
Die Prüfungspunktzahl von Student student_b beträgt 80. Die Adresse dieses Instanzobjekts lautet
.<「main」.Students object at 0x00000129EB0F6B38>Sie können deutlich erkennen, dass das von den beiden Instanzen gedruckte Selbst unterschiedlich ist, da self die Instanz (das Objekt) selbst darstellt.
Am Beispiel der Instanz student_b werden beim Drucken von self die folgenden Objektinformationen angezeigt.
.<__main__.Students object at 0x00000129EB0F6B38>Wenn Sie student_b erneut drucken, wird das gleiche Ergebnis angezeigt.
print(student_b)
Ausgabe:
.<__main__.students object at>Ist zu diesem Zeitpunkt klar, dass self nach der Instanziierung der Klasse die Instanz (das Objekt) selbst darstellt.
Das obige ist der detaillierte Inhalt vonLassen Sie uns über Self in Python sprechen. Wer ist das?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!