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

Erro no código

Eu fui fazendo um junto com o professor e deu tudo certo e gosto de tempos em tempos pausar a aula e tentar fazer outro código sem olhar em lugar nenhum, fiz o código deu erro e mesmo procurando não sei o que estou errando D:

class Programa:
    def __init__(self, nome, tema, ano):
        self._nome = nome
        self.tema = tema
        self._ano = ano

    @property
    def ano(self):
        return self._ano

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

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

    @property
    def tema(self):
        return self.tema

    @tema.setter
    def tema(self, tema):
        self._nome = tema

    @ano.setter
    def ano(self, ano):
        self._nome = ano

    def imprime(self):
        print(f'{imprima._nome} - {imprima.tema} - {imprima._ano}')


class Serie(Programa):
    def __init__(self, nome, tema, ano, temporada):
        super().__init__(nome, tema, ano)
        self.temporada = temporada


class Filme(Programa):
    def __init__(self, nome, tema, ano, duracao):
        super().__init__(nome, tema, ano)
        self.duracao = duracao


os_incriveis = Filme('Os incriveis', 'Aventura', 2002, 180)

lost = Serie('Lost', 'Sobrevivencia', 2000, 8)

lista_programas = [os_incriveis, lost]

for imprima in lista_programas:
    imprima.imprime()
2 respostas
solução!

Oi Alexander, fiz algum testes no seu code, para soluciona o problema removi algumas funções.

Conteúdo Removido:

    @property
    def tema(self):
        return self.tema


    @tema.setter
    def tema(self, tema):
        self._nome = tema

Resultado Final:

class Programa:
    def __init__(self, nome, tema, ano):
        self._nome = nome
        self.tema = tema
        self._ano = ano

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

    def imprime(self):
        print(f'{imprima._nome} - {imprima.tema} - {imprima._ano}')


class Serie(Programa):
    def __init__(self, nome, tema, ano, temporada):
        super().__init__(nome, tema, ano)
        self.temporada = temporada


class Filme(Programa):
    def __init__(self, nome, tema, ano, duracao):
        super().__init__(nome, tema, ano)
        self.duracao = duracao


os_incriveis = Filme('Os incriveis', 'Aventura', 2002, 180)

lost = Serie('Lost', 'Sobrevivencia', 2000, 8)

lista_programas = [os_incriveis, lost]

for imprima in lista_programas:
    imprima.imprime()

Realmente era isso, nossa, não sabia que um '_' era detectado pelo código, achei que era uma convenção entre os programadores de Python, Muito obrigado! ah eu errei ali, coloquei _nome no tema, também.. mds T-T