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

Erro

Pessoa boa noite sempre tento fazer um pouquinho a mais do que exercicio pede dessa forma

class Programa:

    def __init__(self, nome, ano, duracao):
        self._nome = nome.title()
        self.ano = ano
        self.duracao = duracao
        self._like =0

    @property
    def like(self):
        return self._like


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

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


    def dar_like(self):
        self._like+=1

class Filme(Programa):
    def __init__(self, nome, ano, duracao, classificacao):
        '''super erda da classe mae 
        Chama só os atributos desejados

        '''
        super().__init__(nome, ano, duracao)        
        self.classificacao = classificacao

class Serie(Programa):

    def __init__(self, nome, ano, duracao, temporada, episodios):
        '''super erda da classe mae 
        Chama só os atributos desejados

        '''
        super().__init__(nome, ano, duracao)  
        self.temporada = temporada
        self.episodios = episodios



if __name__ == '__main__':

    vingadores = Filme("Vigadores Ultimato", 2020, "3:32:27", 'Ação')
    vingadores.dar_like()
    vingadores.dar_like()
    vingadores.dar_like()
    print(f"Nome da filme : {vingadores.nome}\nAno : {vingadores.ano}\nTempo : {vingadores.duracao}\nlikes = {vingadores.like}")
    def linha (): 
        print("\n")
        print("-"*30)
    linha()

    suits = Serie("Suits", 2020, "42:27", 9, 15)
    suits.dar_like()
    suits.dar_like()
    suits.dar_like()
    suits.dar_like()
    suits.dar_like()
    suits.dar_like()
    suits.dar_like()
    print(f"Nome da serie : {suits.nome}\nAno : {suits.ano}\nTempo : {suits.duracao}\nTemporadas : {suits.temporada}\nEpisodios {suits.episodios}\nlikes : {suits.like}")

    filmes_e_series = [vingadores, suits]

    for programa in filmes_e_series:
        detalhes = programa.classificacao if hasattr(programa, 'detalhes') else programa.temporada, programa.episodios
        print(f'{programa.nome} - {detalhes} - {programa.like}')

Mas da um erro

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeSe alguém puder me orientar desde já grato

2 respostas

Na linha abaixo, o objeto Filme esta caindo no else mas como ele nao tem o atributo temporada e episodios acaba quebrando

detalhes = programa.classificacao if hasattr(programa, 'detalhes') else programa.temporada, programa.episodios

Segue a correção dessa linha para nao quebrar

detalhes = programa.classificacao if hasattr(programa, 'classificacao') else (programa.temporada, programa.episodios)

Codigo com a correcao

class Programa:

    def __init__(self, nome, ano, duracao):
        self._nome = nome.title()
        self.ano = ano
        self.duracao = duracao
        self._like =0

    @property
    def like(self):
        return self._like


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

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


    def dar_like(self):
        self._like+=1

class Filme(Programa):
    def __init__(self, nome, ano, duracao, classificacao):
        '''super erda da classe mae 
        Chama só os atributos desejados

        '''
        super().__init__(nome, ano, duracao)        
        self.classificacao = classificacao

class Serie(Programa):

    def __init__(self, nome, ano, duracao, temporada, episodios):
        '''super erda da classe mae 
        Chama só os atributos desejados

        '''
        super().__init__(nome, ano, duracao)  
        self.temporada = temporada
        self.episodios = episodios



if __name__ == '__main__':

    vingadores = Filme("Vigadores Ultimato", 2020, "3:32:27", 'Ação')
    vingadores.dar_like()
    vingadores.dar_like()
    vingadores.dar_like()
    print(f"Nome da filme : {vingadores.nome}\nAno : {vingadores.ano}\nTempo : {vingadores.duracao}\nlikes = {vingadores.like}")
    def linha (): 
        print("\n")
        print("-"*30)
    linha()

    suits = Serie("Suits", 2020, "42:27", 9, 15)
    suits.dar_like()
    suits.dar_like()
    suits.dar_like()
    suits.dar_like()
    suits.dar_like()
    suits.dar_like()
    suits.dar_like()
    print(f"Nome da serie : {suits.nome}\nAno : {suits.ano}\nTempo : {suits.duracao}\nTemporadas : {suits.temporada}\nEpisodios {suits.episodios}\nlikes : {suits.like}")

    filmes_e_series = [vingadores, suits]

    for programa in filmes_e_series:
        detalhes = programa.classificacao if hasattr(programa, 'classificacao') else (programa.temporada, programa.episodios)
        print(f'{programa.nome} - {detalhes} - {programa.like}')
solução!

Obrigado