Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro

Codigo

class Programa:

    def __init__(self, nome, ano, duracao):
        self._nome = nome.title()
        self.ano = ano
        self.duracao = duracao
        self._like =0

    @property
    def like(self):
        return self._like


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

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


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

    '''

    def imprime(self):
        print(f"Nome da serie : {suits.nome}\nAno : {suits.ano}\nTempo : {suits.duracao}\nlikes : {suits.like}")

    '''

    #Representação Textual  
    def __str__(self):
        return f"Nome da serie : {suits.nome}\nAno : {suits.ano}\nTempo : {suits.duracao}\nlikes : {suits.like}"




class Filme(Programa):
    def __init__(self, nome, ano, duracao, classificacao):
        '''super erda da classe mae 
        Chama só os atributos desejados

        '''
        super().__init__(nome, ano, duracao)        
        self.classificacao = classificacao
    '''
    def imprime(self):
        print(f"Nome da filme : {vingadores.nome}\nAno : {vingadores.ano}\nTempo : {vingadores.duracao}\nlikes = {vingadores.like}\nClassificação : {vingadores.classificacao} ")
    '''
    #Representação textual
    def __str__(self):
        return f"Nome da filme : {self.nome}\nAno : {self.ano}\nTempo : {self.duracao}\nlikes = {self.like}\nClassificação : {self.classificacao}"


class Serie(Programa):

    def __init__(self, nome, ano, duracao, temporada, episodios):
        '''super erda da classe mae 
        Chama só os atributos desejados

        '''
        super().__init__(nome, ano, duracao)  
        self.temporada = temporada
        self.episodios = episodios
    '''
    def imprime(self):
        print(f"Nome da serie : {suits.nome}\nAno : {suits.ano}\nTempo : {suits.duracao}\nTemporadas : {suits.temporada}\nEpisodios {suits.episodios}\nlikes : {suits.like}")
    '''

    #representação textual
    def __str__(self):
        return f"Nome da serie : {self.nome}\nAno : {self.ano}\nTempo : {self.duracao}\nTemporadas : {self.temporada}\nEpisodios {self.episodios}\nlikes : {self.like}"
'''
class Playlist(list):
    def __init__(self, nome, programas):
        self.nome = nome
        super().__init__(programas)
'''
class Playlist:
    def __init__(self, nome, programas):
        self.nome = nome
        self._programas = programas

    #retorna os itens
    def __getitem__(self, item):
        return self._programas[item]

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

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


if __name__ == '__main__':

    vingadores = Filme("Vigadores Ultimato", 2020, "3:32:27", 'Ação')
    suits = Serie("Suits", 2020, "42:27", 9, 15)
    interstelar = Filme("interstelar", 2018, "2:42:27", 'Ficção Cientifica')
    black_mirros = Serie("black mirros", 2016, "42:27", 6, 13)



    vingadores.dar_like()
    vingadores.dar_like()
    vingadores.dar_like()
    #print(f"Nome da filme : {vingadores.nome}\nAno : {vingadores.ano}\nTempo : {vingadores.duracao}\nlikes = {vingadores.like}")
    def linha (): 
        print("-"*30)

    interstelar.dar_like()
    interstelar.dar_like()
    black_mirros.dar_like()
    black_mirros.dar_like()
    suits.dar_like()
    suits.dar_like()
    suits.dar_like()
    #print(f"Nome da serie : {suits.nome}\nAno : {suits.ano}\nTempo : {suits.duracao}\nTemporadas : {suits.temporada}\nEpisodios {suits.episodios}\nlikes : {suits.like}")

    filmes_e_series = [vingadores, suits, interstelar, black_mirros]
    playlist_fim_de_semana = Playlist("Fim de semana", filmes_e_series)

    linha()
    print(f"O tamnho da playlist: {len(playlist_fim_de_semana)}")
    linha()

    for programa in playlist_fim_de_semana:
        print(programa)
        linha()

        '''

        detalhes = programa.classificacao if hasattr(programa, 'classificacao') else (programa.temporada, programa.episodios)
        print(f'{programa.nome} - {detalhes} - {programa.like}')'''

ERRO

<built-in method format of str object at 0x7f472cc10cb0>
Traceback (most recent call last):
  File "modelo.py", line 128, in <module>
    print("O tamnho da playlist: {0}".format)(len(playlist_fim_de_semana))
TypeError: object of type 'Playlist' has no len()

Programa utilizado VScode

1 resposta
solução!

Olá Leandro!

Analisando o erro, você tentou receber o tamanho da referência playlist_fim_de_semana. Esta é uma referência a um objeto Playlist, e o erro ocorre porque objeto não tem tamanho. O python não consegue percorrer o objeto e te dizer um número que demonstre o tamanho do mesmo.

Já se você tentar encontrar o tamanho da lista filmes_e_series, aí sim será possível.

O código abaixo deve funcionar:

    filmes_e_series = [vingadores, suits, interstelar, black_mirros]
    playlist_fim_de_semana = Playlist("Fim de semana", filmes_e_series)

    linha()
    print(f"O tamnho da playlist: {len(filmes_e_series)}")
    linha()