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