Ich komme jetzt aus Java und lerne Python. Ich versuche das Konzept der Klassenmitglieder in Python zu verstehen. HierKlassenmitglieder - Java vs. Python
ist ein Beispielprogramm in Java:
class Hello {
int x = 0;
void ex() {
x = 7;
}
public static void main(String args[]) {
Hello h = new Hello();
System.out.println(h.x);
h.ex();
System.out.println(h.x);
} }
Das ist, was ich in Python hat, folgende einige Beispiele, die ich gefunden:
class Hello:
def __init__(self) :
self.x = 0
def ex(self):
self.x = 7
h = Hello()
print(h.x)
h.ex()
print(h.x)
Beide Programme zurück:
0
7
Hier sind meine Fragen:
- Ist der Python-Code korrekt?
- Der Programmierstil von Python scheint mir im Vergleich zu Java kompakter zu sein. So frage ich mich, WARUM Python erfordert die Weitergabe eines "Selbst" -Parameters.
- An diesem Punkt scheint Python "komplexer" zu sein als Java. Oder gibt es eine Möglichkeit, den "Selbst" -Parameter zu entfernen?
(1) Ja. (2) Google deine Frage genau so. (3) Vielleicht, aber wenn es ist, ist es obskur und du solltest es nicht tun. –
AFAIK der Python-Code ist korrekt. Und ich denke, dass das "Selbst" eher wegen Pythons Philosophie als wegen technischer Notwendigkeit benötigt wird. Blick auf Pythons Fehlen von Klammern zum Abgrenzen von Codeblöcken und stattdessen striktes Festhalten an Einrückung, was, wie ich glaube, ich vor einiger Zeit gelesen habe, aufgrund der Philosophie, dass die Programme mit richtigem Einrücken lesbarer werden. In diesem Fall müssen Sie explizit angeben, dass Sie die Instanzvariable und nicht eine lokale Variable meinen, um die Eindeutigkeit zu gewährleisten. (Ich verwende aus diesem Grund sogar explizites "this" in Java ...) – Julian
"self" ist in Python verfügbar, weil "Explicit ist besser als implizit" (https://www.python.org/dev/peps/pep- 0020 /). Ich würde eher fragen: "Warum hat Java eine magische, nicht deklarierte Variable, die" dieses "heißt? (wahrscheinlich weil C++ hat). – cdarke