Qual é o objetivo da self
palavra em Python? Entendo que se refere ao objeto específico criado a partir dessa classe, mas não consigo entender por que ele precisa ser explicitamente adicionado a todas as funções como parâmetro. Para ilustrar, no Ruby eu posso fazer isso:
class myClass
def myFunc(name)
@name = name
end
end
O que eu entendo facilmente. No entanto, em Python, preciso incluir self
:
class myClass:
def myFunc(self, name):
self.name = name
Alguém pode me falar sobre isso? Não é algo que me deparei na minha experiência (reconhecidamente limitada).
@name
mais intuitivo do que self.name
? O último, IMO, é mais intuitivo.
@foo
e self.foo
são igualmente explícitos, pois nenhuma resolução implícita precisa ocorrer (por exemplo, em C ++, os membros da instância podem ser acessados "implicitamente" sem "explicitamente" usar espaços para nome). A única diferença é que o Ruby introduz uma nova semântica (@), enquanto o Python não. Se uma nova semântica valia ou não a quantidade de verbosidade evitada é puramente subjetiva. Porém, deve-se notar que a maioria das linguagens modernas escolhe introduzir um conceito aqui (por exemplo, $ php's $ this, JS's this).