¿Cuál es el propósito de la self
palabra en Python? Entiendo que se refiere al objeto específico creado a partir de esa clase, pero no puedo ver por qué debe agregarse explícitamente a cada función como parámetro. Para ilustrar, en Ruby puedo hacer esto:
class myClass
def myFunc(name)
@name = name
end
end
Lo cual entiendo, con bastante facilidad. Sin embargo, en Python necesito incluir self
:
class myClass:
def myFunc(self, name):
self.name = name
¿Alguien puede hablarme sobre esto? No es algo con lo que me haya encontrado en mi experiencia (ciertamente limitada).
@name
más intuitivo que self.name
? El último, IMO, es más intuitivo.
@foo
y self.foo
son igualmente explícitos ya que no es necesario que se produzca una resolución implícita (por ejemplo, en C ++, se puede acceder "implícitamente" a los miembros de la instancia sin "explícitamente" usar espacios de nombres). La única diferencia es que Ruby introduce una nueva semántica (@), mientras que Python no. Si una nueva semántica valió o no la cantidad de verbosidad evitada es puramente subjetiva. Sin embargo, debe tenerse en cuenta que la mayoría de los lenguajes modernos eligen introducir un concepto aquí (por ejemplo, php's $ this, JS's this).