Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Exercício Python Brasil

class Bola:

    def __init__(self, cor, circunferencia, material):
        self.__cor = cor
        self.__circunferencia = circunferencia
        self.__material = material

    @cor.setter
    def cor(self, cor):
        self.__cor = cor

    @property 
    def mostraCor(self):
        return self.__cor

Gente, estou fazendo esse exercício no Jupyter Notebook, mas está dando o seguinte erro:

NameError                                 Traceback (most recent call last)
<ipython-input-12-c66d63af7d4c> in <module>
----> 1 class Bola:
      2 
      3     def __init__(self, cor, circunferencia, material):
      4         self.__cor = cor
      5         self.__circunferencia = circunferencia

<ipython-input-12-c66d63af7d4c> in Bola()
      6         self.__material = material
      7 
----> 8     @cor.setter
      9     def cor(self, cor):
     10         self.__cor = cor

NameError: name 'cor' is not defined

Alguém poderia me ajudar? O problema está no setter, mas não sei como consertar.

Obrigado.

2 respostas
solução

Teu setter tem que ter o mesmo nome do setter

class Bola:

    def __init__(self, cor, circunferencia, material):
        self.__cor = cor
        self.__circunferencia = circunferencia
        self.__material = material

    @property
    def cor(self):
        return self.__cor

    @cor.setter
    def cor(self, nova_cor):
        self.__cor = nova_cor

Para a maneira que vc fez funcionar tinha que ser assim:

class Bola:

    def __init__(self, cor, circunferencia, material):
        self.__cor = cor
        self.__circunferencia = circunferencia
        self.__material = material


    @property
    def mostraCor(self):
        return self.__cor

    @mostraCor.setter
    def cor(self, cor):
        self.__cor = cor

E tbm se eu não estou enganado o property tem que ficar em cima do setter(Vale pesquisar)!.Espero ter ajudado

Entendi, obrigado.