Qual è lo scopo della self
parola in Python? Capisco che si riferisce all'oggetto specifico creato da quella classe, ma non riesco a capire perché debba essere esplicitamente aggiunto ad ogni funzione come parametro. Per illustrare, in Ruby posso fare questo:
class myClass
def myFunc(name)
@name = name
end
end
Che capisco, abbastanza facilmente. Tuttavia in Python devo includere self
:
class myClass:
def myFunc(self, name):
self.name = name
Qualcuno può parlarmi attraverso questo? Non è qualcosa che mi sono imbattuto nella mia (certamente limitata) esperienza.
@name
più intuitivo di self.name
? Quest'ultimo, IMO, è più intuitivo.
@foo
e self.foo
sono ugualmente espliciti in quanto non deve verificarsi una risoluzione implicita (ad esempio in C ++, è possibile accedere "implicitamente" ai membri dell'istanza senza "esplicitamente" utilizzare gli spazi dei nomi). L'unica differenza è che Ruby introduce un nuovo semantico (@), mentre Python no. Il fatto che un nuovo semantico valga o meno la quantità di verbosità evitata è puramente soggettivo. Tuttavia, va notato che la maggior parte delle lingue moderne sceglie di introdurre qui un concetto (ad esempio php è $ this, JS è questo).