Was ist der Zweck des self
Wortes in Python? Ich verstehe, dass es sich auf das spezifische Objekt bezieht, das aus dieser Klasse erstellt wurde, aber ich kann nicht verstehen, warum es explizit zu jeder Funktion als Parameter hinzugefügt werden muss. Zur Veranschaulichung kann ich in Ruby Folgendes tun:
class myClass
def myFunc(name)
@name = name
end
end
Was ich ganz leicht verstehe. In Python muss ich jedoch Folgendes einschließen self
:
class myClass:
def myFunc(self, name):
self.name = name
Kann mir jemand das erklären? Es ist nicht etwas, auf das ich in meiner (zugegebenermaßen begrenzten) Erfahrung gestoßen bin.
@name
intuitiver als self.name
? Letzteres, IMO, ist intuitiver.
@foo
und self.foo
sind ebenso explizit, da keine implizite Auflösung erfolgen muss (z. B. können in C ++ auf Instanzmitglieder "implizit" zugegriffen werden, ohne "explizit" Namespaces zu verwenden). Der einzige Unterschied besteht darin, dass Ruby eine neue Semantik (@) einführt, Python jedoch nicht. Ob eine neue Semantik die vermiedene Ausführlichkeit wert war oder nicht, ist rein subjektiv. Es sollte jedoch beachtet werden, dass die meisten modernen Sprachen hier ein Konzept einführen (z. B. PHPs $ this, JS's this).