Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Setter não está funcionando

class filme:
    def __init__(self, nome, ano, duracao):
        self.__nome = nome.title()
        self.ano = ano
        self.duracao = duracao
        self.__likes = 0

    def ficha(self):
        print(f'FILME: {self.__nome} - ANO: {self.ano} - DURAÇÃO: {self.duracao} min')
        print(f'{self.__likes} likes')

    @property
    def likes(self):
        return self.__likes

    @property
    def nome(self):  #função 1
        return self.__nome

    @nome.setter #função 2
    def nome(self, nome):
        print('Alterando nome...')
        self.__nome = nome

    def dar_likes(self):
        self.__likes += 1

O "@nome.setter" não está funcionando, ocasionando um erro no código. Este é o seguinte erro:

soul.altNome('Divertidamente')

Traceback (most recent call last): File "", line 1, in TypeError: 'str' object is not callable

Acredito que este erro se dá por o "nome" de "@nome.setter"(função 1) não estar se ligando ao "nome" de sua função (função 2), mas sim a da função acima (função 1), "@property", pois quando coloco o mouse em cima de "@nome.setter" fica destacado "nome" da função de cima (função 1).

2 respostas
solução!

Oii Ana, como você está?

Isso está ocorrendo por causa da sintaxe que você utilizou para chamar a property de setter:

soul.altNome('Divertidamente')

Não é necessário utilizar parênteses, o correto é acessarmos a propriedade através do ponto e em seguida atribuir um valor a ela. Veja como fica:

filme1 = filme("Soul", 2020, 145)
filme1.ficha()
filme1.nome = "Divertidamente"
filme1.ficha()

Resultado:

FILME: Soul - ANO: 2020 - DURAÇÃO: 145 min
0 likes
Alterando nome...
FILME: Divertidamente - ANO: 2020 - DURAÇÃO: 145 min
0 likes

Qualquer dúvida estou por aqui, tá bom?

Grande abraço!

Houve um engano da minha parte mesmo, muito obrigado mesmo assim!! Abraços!

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