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, novo_nome):
self._nome = novo_nome.tittle()
def __str__(self):
return f'Nome: {self.nome} - Likes: {self.likes}'
class Filme(Programa):
def __init__(self, nome, ano, duracao):
super().__init__(nome, ano)
self.duracao = duracao
def __str__(self):
return f'Nome: {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'Nome: {self.nome} - {self.ano} - {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]
@property
def __len__(self):
return len(self._programas)
# @property
# def listagem(self):
# return self._programas
vingadores = Filme('vingadores - guerra infinita', 2018, 160)
atlanta = Serie('atlanta', 2018, 2)
la_casa_de_papel = Serie('la casa de papel', 2018, 3)
todo_mundo_em_panico = Filme('todo mundo em pânico', 1999, 100)
vingadores.dar_likes()
atlanta.dar_likes()
atlanta.dar_likes()
atlanta.dar_likes()
vingadores.dar_likes()
la_casa_de_papel.dar_likes()
la_casa_de_papel.dar_likes()
la_casa_de_papel.dar_likes()
todo_mundo_em_panico.dar_likes()
filmes_e_series = [vingadores, atlanta, la_casa_de_papel, todo_mundo_em_panico]
minha_playlist = Playlist('fim de semana', filmes_e_series)
for programa in minha_playlist:
print(programa)
print(f'Tamanho da Playlist: {len(minha_playlist.listagem)}')
print(f'Tá ou não tá? {la_casa_de_papel in minha_playlist}')
AttributeError: 'Playlist' object has no attribute 'listagem'
Bem, eu deixei o método "listagem" como comentário propositalmente. Na explicação, sugere-se para apagarmos os métodos "listagem" e "tamanho", porém, quando apagamos a propriedade "listagem", não imprime os itens da minha playlist. Se eu tiro o método "listagem" como comentário, meu código funciona. Inclusive o próprio arquivo do projeto final está com erro.