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

Código Não funciona como o esperado.

Código:

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_like(self):
    self._likes += 1

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

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

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

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.temporadas = temporadas

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

class Playlist(list): def init(self, nome, programas): self.nome = nome super().init()

batman = Filme('Batman, o cavaleiro das trevas', 2008, 152) house = Serie('House, M.D', 2004, 8) tmep = Filme('Todo Mundo em Pânico', 1999, 100) demolidor = Serie('Demolidor', 2016, 2)

batman.dar_like() tmep.dar_like() tmep.dar_like() tmep.dar_like() tmep.dar_like() demolidor.dar_like() demolidor.dar_like() house.dar_like() house.dar_like() house.dar_like()

filmes_e_series = [batman, house, demolidor, tmep] playlist_fim_de_semana = Playlist('Fim De Semana', filmes_e_series)

print(f'tamanho do playlist: {len(playlist_fim_de_semana)}')

for programa in playlist_fim_de_semana: print(programa)

no entanto:

C:\Users\Lucas\PycharmProjects\pythonProject\python3oo2\venv\Scripts\python.exe C:/Users/Lucas/PycharmProjects/pythonProject/python3oo2/modelo.py tamanho do playlist: 0

Process finished with exit code 0

o que poderia ser?

2 respostas
solução!

Boa tarde Lucas, tudo bem? Espero que sim!

Obrigado por enviar sua pergunta!

A sua classe Playlist que herda de list, não está passando o parâmetro programas dentro do init e está faltando dos underlines no construtor. O correto seria assim:

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

Espero que tenha tirado a sua dúvida.

Estou à disposição. Bons estudos!

Falta De atenção da minha parte, obrigado! :)