1
resposta

MINHA RESPOSTA

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

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

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

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

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

#Classes Filhas

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

    def __str__(self):
        return f"{self._nome} - {self.ano} - {self.duracao} min - {self._likes} Likes"

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

    def __str__(self):
        return f"{self._nome} - {self.ano} - {self.temporada} temporadas - {self._likes} Likes"

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

    @property
    def listagem(self):
        return self._programas

    @property
    def tamanho(self):
        return len(self._programas)


#CÓDIGOS DE IMPRESSÃO

vingadores = Filme('vingadores - guerra infinita', 2018, 160)
atlanta = Serie('atlanta', 2018, 2)
tmep = Filme('todo mundo em panico', 1999, 100)
demolidor = Serie('demolidor', 2016, 2)

vingadores.dar_likes()
vingadores.dar_likes()
vingadores.dar_likes()
atlanta.dar_likes()
atlanta.dar_likes()
tmep.dar_likes()
demolidor.dar_likes()
demolidor.dar_likes()

listinha = [atlanta, vingadores, demolidor, tmep]
minha_playlist = Playlist('fim de semana', listinha)

for programa in minha_playlist.listagem:
    print(programa)

print(f'Tamanho: {len(minha_playlist.listagem)}')
1 resposta

Olá Caique, tudo bem com você?

Fico feliz que tenha compartilhado com a comunidade do fórum da Alura o seu desenvolvimento, continue assim.

Uma dica em relação a property, devemos nos atentar é que, quando temos um setter (@< nome_do_metodo>.setter), obrigatoriamente temos que ter um getter (@property) do mesmo nome e isso ocorre porque o setter irá procurar a referência do property.

Para saber um pouco mais sobre getters e setters, recomendo a leitura do artigo abaixo:

Caso tenha dificuldades com o idioma, recomendo o uso do tradutor do navegador.

Coloco-me à disposição.

Abraços e bons estudos.