1
resposta

Mãos na massa

class Programa:
    def __init__(self, nome, ano):
        self._nome = nome.title()
        self.ano = ano
        self._likes = 0

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

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

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

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


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

    def __str__(self):
        return f"{self.nome} - {self.duracao} min - {self.likes} Likes"


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

    def __str__(self):
        return f"{self.nome} - {self.temporadas} Temporadas - {self.likes} Likes"


class Playlist:
    def __init__(self, nome, programas):
        self.nome = nome
        self._programas = programas

    def __getitem__(self, item):
        return self._programas[item]

    def __len__(self):
        return len(self._programas)


if __name__ == '__main__':
    vingadores = Filme("Vingadores: guerra infinita", 2018, 160)
    tmep = Filme("Todo mundo em panico", 1999, 100)
    demolidor = Serie("demolidor", 2016, 2)
    atlanta = Serie("atlanta", 2018, 2)

    vingadores.dar_like()
    tmep.dar_like()
    tmep.dar_like()
    tmep.dar_like()
    tmep.dar_like()
    atlanta.dar_like()
    atlanta.dar_like()
    demolidor.dar_like()
    demolidor.dar_like()

    filmes_e_series = [vingadores, atlanta, demolidor, tmep]

    playlist = Playlist("Para maratonar", filmes_e_series)
    for item in playlist:
        print(item)

    print(f"Tamanho da playlist: {len(playlist)}")
1 resposta

Oi Henrique, tudo bem?

Obrigada por compartilhar o código com a gente! Parabéns por praticar programação e criar essa estrutura de classes.

Analisando o código, vejo que você criou a classe Programa como classe base, que possui um nome, ano e quantidade de likes. Essa classe também possui um método dar_like() que incrementa a contagem de likes.

Em seguida, você criou as classes Filme e Serie, que herdam da classe Programa. Cada uma dessas classes adiciona atributos específicos, como duração para filmes e número de temporadas para séries. Além disso, você implementou o método __str__ nessas classes para exibir informações formatadas.

A classe Playlist é responsável por armazenar uma lista de programas (filmes e séries) e permite o acesso a eles por meio de indexação e também retorna o tamanho da playlist.

No trecho final do código, você instancia alguns filmes e séries, atribui likes a eles e os adiciona a uma lista. Em seguida, você cria uma playlist com essa lista e itera sobre os programas, exibindo suas informações.

É um código bem estruturado e fácil de entender. Continue praticando e explorando novos conceitos de programação.

Um abraço e bons estudos.