Ich bin neu bei Python, und während ich einige Methoden an meinem Objekt getestet habe, ist mir etwas "Seltsames" aufgefallen.
%Vor%Ich habe dieses kleine Beispiel geschrieben, um zu verdeutlichen, wo ich verwirrt war. Wenn Sie Ape (). Say ('eeek') machen, instantiiert das tatsächlich ein Ape-Objekt und führt die init-Methode aus? Ich dachte, es würde nicht, aber ich hatte einige seltsame Nebenwirkungen, also denke ich, dass es tut?
Ja, tut es. Das macht Ape()
: Er erstellt ein neues Ape
-Objekt, und als Teil dieses Prozesses wird die __init__
-Methode ausgeführt.
In Ihrem Beispiel rufen Sie dann die Methode say
dieses Objekts auf. Beachten Sie, dass Sie say
nicht aufrufen können, wenn Sie kein Ape
-Objekt haben.
Wenn Sie eine Methode direkt aufrufen möchten, ohne eine Instanz zu erstellen, können Sie den staticmethod
Dekorator verwenden. Beachten Sie, dass% self
nicht vorhanden ist, wenn Sie eine statische Methode verwenden
Vergleiche mit Klassenmethoden, bei denen die Klasse der erste Parameter anstelle einer Instanz ist
%Vor% Ja. Ape () instanziiert ein Objekt der Klasse Ape, obwohl, da keine Zuweisung vorhanden ist, kein Etikett damit assoziiert ist. An diesem Punkt wird seine Funktion __init__
aufgerufen. Dann wird die say-Funktion aufgerufen.
Um es klar zu sagen:
%Vor%entspricht:
%Vor%Was deutlicher zeigt, was zuerst passiert.
Tags und Links python