Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Atributos de instância

Olá,

No exercício do link https://cursos.alura.com.br/course/introducao-ao-python/task/7015, fiquei com dúvida. No construtor, são passados os parâmetros "nome_completo, telefone_com_ddd, empresa_nome". Todavia, os atributos utilizados no construtor são nome, telefone e empresa.

Por que não há problema em haver diferença nisso? Isto é, se o parâmetro nome_completo é passado, porque não é necessário ser "self.nome_completo"?

1 resposta
solução!

Oi, Roger! Muito legal sua dúvida! Aí está a diferença dos parâmetros de uma função para os atributos de uma classe.

Vamos lá: o construtor é uma simples função no Python, certo? Como uma função comum, ela pode receber parâmetros. Nesse caso, recebe self, que é passado automaticamente pelo Python e é a instância da classe que estamos criando o objeto, nome_completo, telefone_com_ddd e empresa_nome. Esses quatros parâmetros são variáveis locais da função construtora, ou seja, elas só existem durante a execução dessa função.

O que a gente quer, é criar atributos na instância de nossa classe, um para cada parâmetro (tirando o self, que é a instância em si) que passamos. Dada uma instância instancia, para criarmos um atributo atributo nela, podemos usar essa sintaxe:

instancia.atributo = 'esse é meu atributo'

Dentro do construtor, a instância é self e o valor dos atributos estão especificados em cada parâmetro. Note, o valor. Esses nomes que passamos são importantes apenas para identificarmos cada parâmetro dentro da função, mas não são relacionados ao atributo que criaremos em si. Quando dizemos

self.nome = nome_completo

Estamos falando pro Python criar um atributo nome na instância dessa classe, com o valor que foi passado no parâmetro nome_completo. Poderíamos mudar de nome para qualquer outra coisa, como:

self.nome_inteiro = nome_completo

O importante é que o valor seja igual ao passado pelo parâmetro (ou seja, se for como essa linha, nome_completo deve ser um parâmetro do construtor).

Espero que tenha ficado mais claro! Abraços e bons estudos! Qualquer dúvida pode falar aqui :D