Todo metodo de uma classe Python deve receber, obrigatoriamente, o parâmetro self? Não ficou claro para mim a função desse parâmetro.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Todo metodo de uma classe Python deve receber, obrigatoriamente, o parâmetro self? Não ficou claro para mim a função desse parâmetro.
Oi Bruno,
Esse parâmetro é importante porque quando o Python invoca um método, ele sempre passa o objeto como primeiro parâmetro. Mesmo que você não chame o primeiro parâmetro de self, ele será uma instância do objeto da sua classe. Veja:
class Teste:
def metodo(x):
print(x)
teste = Teste()
teste.metodo()
Quando você roda esse programa, a saída é:
<__main__.Teste instance at 0x1074f3cb0>
Caso você tente declarar um método sem parâmetros, dessa forma:
class Teste:
def metodo():
print("Alura")
teste = Teste()
teste.metodo()
Verá esse erro ao rodar o código:
TypeError: metodo() takes no arguments (1 given)
Mesmo que você não tenha passado nenhum parâmetro, o próprio Python passa o objeto como parâmetro. Por conta disso, é uma boa prática sempre chamar o primeiro parâmetro de self, afinal ele sempre será a instância do objeto em questão.