Ich komme jetzt aus Java und lerne Python. Ich versuche das Konzept der Klassenmitglieder in Python zu verstehen.
Hier ist ein Beispielprogramm in Java:
%Vor%Das habe ich in Python getan, nachdem ich einige Beispiele gefunden habe:
%Vor%Beide Programme geben zurück:
%Vor%Hier sind meine Fragen:
Zuerst ist Ihr Python-Code korrekt.
Es kommt nur darauf an, wie die Sprachen gestaltet sind. Java verwendet eine Art automatische Inferenz eines Verweises auf das Objekt. Es kann manchmal zu seltsamen Verhaltensweisen für Nicht-Java-Experten führen:
%Vor% Deshalb gibt es in Java das Keyword this
, das verwendet werden kann (aber Sie werden nicht gezwungen), um diese Mehrdeutigkeit zu lösen.
Das Python-Team hat entschieden, das Wort self (oder jedes andere Wort, das ich später erklären werde) zu verwenden, um diese Art von Problemen zu vermeiden. Du kannst es nicht loswerden. Allerdings ist Java immer noch eine ausführlichere Sprache als Python und das Schlüsselwort self beeinflusst diese Annahme nicht sehr.
Sie sind jedoch nicht verpflichtet, das Wort "self" als Referenz für das aktuelle Objekt zu verwenden. Sie können jedes andere Wort verwenden, das der erste Parameter Ihrer Methode wäre (aber es ist eine sehr schlechte Übung).
Hier können Sie zwei Referenzen sehen, die tief erklären, warum "das Selbst hier ist":
Also in Java ist die Struktur im Allgemeinen
%Vor%ist in Python sehr ähnlich. gleiche Struktur nur für alle Funktionen, die mit den Daten arbeiten, die Sie selbst als Argument verwenden müssen. wo Java, musste es keine Argumente nehmen.
Auch scheint es in Python alle Daten standardmäßig öffentlich zu sein, so dass Sie Getter und Setter nicht wie in Java verwenden müssen.
persönlich finde ich eine Python-Klasse eher ein C-Struct mit einigen zusätzlichen Features, wobei Java alles in eine Klasse geworfen wird.