Heim > Backend-Entwicklung > Python-Tutorial > Python-Selbst was bedeutet das?

Python-Selbst was bedeutet das?

(*-*)浩
Freigeben: 2020-09-18 13:48:00
Original
37377 Leute haben es durchsucht

Selbst bedeutet „selbst“. In Python stellt es eine Instanz einer Klasse dar, keine Klasse. Self kann nur in Klassenmethoden gefunden werden. Bei der Definition von Klassenmethoden muss kein Self vorhanden sein. Der Name „Selbst“ ist nicht notwendig. Sie können ihn als „a“ oder „b“ oder als einen beliebigen anderen Namen definieren, aber er ist konventionell und kann die Schwierigkeit des Verstehens verringern.

Python-Selbst was bedeutet das?

Zuerst müssen wir verstehen, warum das Wort self in Python-Klassen verwendet wird. Warum nicht Namen wie „zhangsan“ und „lisi“ verwenden? das muss seine Absicht sein.

self stellt eine Instanz einer Klasse dar, keine Klasse.

class Test:
    def prt(self):
        print(self)
        print(self.__class__)
 
t = Test()
t.prt()
Nach dem Login kopieren

Das Ausführungsergebnis ist wie folgt:

<__main__.Test object at 0x000000000284E080>
<class &#39;__main__.Test&#39;>
Nach dem Login kopieren

Aus dem obigen Beispiel ist offensichtlich, dass self eine Instanz einer Klasse darstellt. Und self.class zeigt auf die Klasse.

Der erste Parameter der Methode in der Klasse muss self sein, sonst kann die Instanz die Methode in der Klasse nicht korrekt aufrufen. Das heißt, wenn der erste Parameter in der Methode nicht self ist (im Großen und Ganzen). Sinn), dann hat diese Methode keinen Wert, weil die Instanz sie nicht aufrufen kann. Ich weiß wirklich nicht, welchen Nutzen eine Methode hat, die nicht aufgerufen werden kann.

Hinweis: Ersetzen Sie self durch this. Das Ergebnis ist das gleiche, aber es ist am besten, das herkömmliche self in Python zu verwenden.

Beim Erben ist die übergebene Instanz die übergebene Instanz, nicht die Instanz der Klasse, in der self definiert ist.

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()
Nach dem Login kopieren

Die Ausführungsergebnisse lauten wie folgt:

<__main__.Child object at 0x0000000002A47080>
<__main__.Child object at 0x0000000002A47080>
<__main__.Parent object at 0x0000000002A47240>
Nach dem Login kopieren

Erklärung:

Es sollte keine Verständnisprobleme geben, wenn c.cprt() ausgeführt wird, was sich auf an bezieht Instanz der Child-Klasse.

Aber wenn c.pprt() ausgeführt wird, entspricht es Child.pprt(c), sodass self immer noch auf eine Instanz der Child-Klasse verweist, da die pprt()-Methode nicht in self definiert ist. Vererbung wird vererbt Als ich den Baum durchsuchte, stellte ich fest, dass die pprt()-Methode in der übergeordneten Klasse Parent definiert ist und daher erfolgreich aufgerufen wird

Das obige ist der detaillierte Inhalt vonPython-Selbst was bedeutet das?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage