Ich selbst bin neu in Python und es gibt viele Dinge, die ich nicht verstehe. (Es tut mir leid, wenn dieser Artikel auch falsch ist)
Beim Lernen in Python kommt etwas heraus, das Selbst genannt wird. Es scheint jedoch eine Magie zu sein, daher bin ich mir nicht sicher, also werde ich zusammenfassen, was ich untersucht habe.
main.py
class Cat():
def __init__(self,name):
self.name = name
def naku(self):
print("Miau")
tama = Cat("Tama")
tama.naku()
Cat.naku(tama)
In Python
main.py
Empfänger.Methode(Streit…)
,
main.py
Empfängerklasse.Methode(Empfänger,Streit…)
Interpretieren als. Ich weiß nicht warum. (wirklich leid) Es funktioniert jedoch genauso, unabhängig davon, welches Sie schreiben, und wenn Sie sich selbst verstehen, ist es einfacher, das erstere als das letztere zu verstehen, daher werde ich es auf diese Weise erklären.
Lassen Sie uns zunächst den gesamten Code durchgehen. Erstens gibt es die Cat-Klasse.
main.py
class Cat():
def __init__(self,name):
self.name = name
def naku(self):
print("Miau")
Die Instanzvariable enthält einen Namen. Die Naku-Funktion klingt "Nya".
Klassen sind wie Konzepte, daher werden sie tatsächlich unter dem Namen "Tama" beschworen (instanziiert).
main.py
tama = Cat("Tama")
Ja, die Katze Tama wurde jetzt gerufen. Als nächstes lass mich klingeln.
main.py
#Empfänger.Methode(Streit…)
tama.naku() #=>Miau
Ja, es hat geschrien. Dies ist eine andere Art zu schreiben, nicht wahr?
main.py
#Empfängerklasse.Methode(Empfänger,Streit…)
Cat.naku(tama) #=>Miau
Ja, was Sie hier sehen möchten, ist, dass "tama" im Empfängerteil der Argumentklammern steht. Wenn Sie es also erneut mit der in der Klasse definierten Naku-Funktion vergleichen,
python
#neko Funktionsdefinition
def naku(self):
#Funktionsaufruf
Cat.naku(tama)
Die Argumente stimmten überein. Dies ist die wahre Identität des Selbst.
Mit anderen Worten, hier ist es "tama = self". Es wird oft erklärt, dass "self die Instanz selbst ist", aber einfach, weil die Funktion "Receiver class.method (Empfänger, Argument ...)" in der Python-Syntax als erste aufgerufen wird Es scheint nutzlos zu sein, da die Anzahl der Argumente nicht übereinstimmt, es sei denn, die Instanz selbst wird in ein Argument (Empfänger) eingefügt.
Gleiches gilt für die Init-Funktion. In Anbetracht der Funktionsweise der Init-Funktion, die beim Beschwören von Tama-chan aufgerufen wird,
python
#Empfängerklasse.Methode(Empfänger,Streit…)
Cat.__init__(tama,"Tama")
Sie können verstehen, dass der Code intern erfolgt.
Nein, warum wurde das "tama" des Cat () - Arguments zum Argument der init-Funktion! ?? Das ist eine Frage, die sicherlich auftaucht, aber wenn Sie sorgfältig darüber nachdenken, ist die Init-Funktion eine spezielle, die zum Zeitpunkt der Instanziierung immer aufgerufen wird, im Gegensatz zu der Funktion, die Sie selbst definieren, und wird daher als Argument von Cat () verwendet. Ich denke jedoch, dass es automatisch in das Argument der init-Funktion aufgenommen wird. (Bitte lassen Sie mich wissen, wenn jemand weiß.) Außerdem sind Klassen keine Funktionen, sodass keine Argumente erforderlich sind.
--self ist nur ein Argument
Recommended Posts