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.
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.