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

@nome.setter pq ele colocou (novo_nome) e não apenas nome ?

no código de setter :

@nome.setter
def nome(self, novo_nome):
    self.__nome = novo_nome.title()

ele usou o objeto novo_nome, porém para mim, deveria ser apenas o objeto nome, nao ? pq eu entendia que o setter iria pegar a variável nome ( que esta escrito por todo o código) e transformar ela em self.__nome ( um objeto privado ). Agora não to entendendo é nada.

1 resposta
solução!

Fala aí, Arthur!

Tudo bem?

Então, ele colocou esse 'novo_nome' porque quando você define um setter você quer justamente alterar o que estava lá inicializado com o método construtor(init).

Vou tentar ser mais claro:

class alunos:
        def __init__(self, nome, idade):
                self._nome = nome
                self. _idade = idade

@property 
def nome(self, nome):
        return _nome

@nome.setter
def novo_nome(self, novo_nome):
        self._nome = novo _nome.title()

arthur = Alunos("Arthur", 23)
  1. Quando iniciamos o construtor, essa seria a saída:

    .     print(arthur.nome) 
    .     >>>   "Arthur"
  2. Agora você decidiu alterar o nome, de Arthur para Patrick. Criamos a propriedade setter que irá alterar um atributo privado (Lembrando que o '_nome' torna ele privado.)

arthur.nome = "Patrick"
*nesse caso o nome é o MÉTODO SETTER e não a variável*
.     print(arthur.nome) 
    .     >>>   "Patrick"

Com isso, é realmente o mais indicado colocar novo_nome como parâmetro para alterar o atributo do init.

Espero que essa dica tenha sido útil. =)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software