1
resposta

usando o __add__ recebo erro

recebo um erro ao definir o ADD abaixo para adicionar dois objetos.

def add(self, other): return Playlist(self._programas + other._programas)

playlist_fds3 = Playlist("fds", filmes_e_series) playlist_fds2 = Playlist("fds..", filmes_e_series2) playlist_fds = playlist_fds3 + playlist_fds2

1 resposta

Olá, Daniela

O erro pode estar ocorrendo devido a alguns fatores. A primeira coisa que precisamos verificar é se a classe Playlist tem um construtor que aceita uma lista de programas como argumento. O método __add__ que você definiu está tentando criar uma nova Playlist a partir da soma de duas listas de programas, então é essencial que o construtor da sua classe Playlist esteja preparado para isso.

O construtor da sua classe Playlist deveria ser algo parecido com isso:

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

Note que estamos convertendo o argumento programas para uma lista. Isso é importante porque quando você soma duas listas em Python, o resultado é uma nova lista. Então, o resultado de self._programas + other._programas é uma lista, e nós precisamos garantir que nossa classe Playlist possa lidar com isso.

Outro ponto importante é garantir que filmes_e_series e filmes_e_series2 sejam listas ou algum outro tipo de sequência. O operador + está tentando adicionar esses dois objetos, então eles precisam ser tipos de dados que suportam essa operação.

Por fim, verifique se a classe Playlist está corretamente implementada com os métodos mágicos necessários para seu funcionamento, como __getitem__ e __len__, por exemplo.

Aqui está um exemplo de como a classe Playlist poderia ser:

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

    def __getitem__(self, item):
        return self._programas[item]

    def __len__(self):
        return len(self._programas)

    def __add__(self, other):
        return Playlist(self.nome + " & " + other.nome, self._programas + other._programas)

Neste exemplo, quando somamos duas Playlists, criamos uma nova Playlist cujo nome é a combinação dos nomes das duas Playlists originais e cuja lista de programas é a soma das listas de programas das Playlists originais.

Espero ter ajudado e bons estudos!