Seguindo o passo a passo estive implementando o duck typing, mas saída do loop for está dando como none. Qual pode estar sendo o problema no código abaixo?
class Programa:
def __init__(self, nome, ano):
self._nome = nome.title()
self.ano = ano
self._likes = 0
def dar_like(self):
self._likes += 1
@property
def likes(self):
return self._likes
@property
def nome(self):
return self._nome
@nome.setter
def nome(self, novo_nome):
self._nome = novo_nome.title()
def __str__(self):
return f"Nome: {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"Nome: {self.nome} - Ano: {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} - Ano: {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):
self._programas[item]
def __len__(self):
return len(self._programas)
vingadores = Filme('Vingadores', 2018, 160)
atlanta = Serie('Atlanta', 2017, 2)
it = Filme('it', 2021, 180)
demolidor = Serie('demolidor', 2017, 2)
vingadores.dar_like()
demolidor.dar_like()
demolidor.dar_like()
vingadores.dar_like()
it.dar_like()
it.dar_like()
it.dar_like()
it.dar_like()
vingadores.dar_like()
filmes_e_series = [vingadores, atlanta, demolidor, it]
playlist_fim_de_semana = Playlist('fim de semana', filmes_e_series)
for programa in playlist_fim_de_semana:
print(programa)
print(f'Tamanho do Playlist: {len(playlist_fim_de_semana)}')
print(f'Tá ou não? {demolidor in playlist_fim_de_semana}')
Saída no prompt:
None None None None Tamanho do Playlist: 4 Tá ou não? False