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)
Quando iniciamos o construtor, essa seria a saída:
. print(arthur.nome)
. >>> "Arthur"
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. =)