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

[Dúvida] Dúvida em relação a junção dos dados.

No código mostrado em aula:

1º elif self.tipo_dados == 'list':
            dados = self.path
            self.path = 'lista em memoria'
        
2º def join(dadosA, dadosB):
        combined_list = []
        combined_list.extend(dadosA.dados)
        combined_list.extend(dadosB.dados)
        return Dados(combined_list, 'list')


3º dados_fusao = Dados.join(dados_empresaA, dados_empresaB)

Algumas dúvidas acabaram surgindo: No terceiro código, quando eu chamo o método construtor "Dados." Para o python eu estou indicando que eu quero que os "dados_fusao" retorne um objeto da classe Dados?

No segundo código quando eu utilizo self junto com a variável "dados_fusao" então ele estaria esperando que o método utilizasse o objeto "dados_fusao" e por isso devemos usar um método estático? Pois não usaremos o objeto no método?

E por fim no primeiro código não ficou claro do por que devemos usar "dados = path" e " self.path = 'lista em memoria'" Se possível eu gostaria de uma explicação mais passo a passo, pois até aonde eu compreendi da explicação, nós combinamos dois atributos "dados" de dois objetos e retornamos um novo objeto da Classe Dados, mas não fez sentido o atributo "dados" receber o "path".

1 resposta
solução!

Ei, Vitor! Tudo bem?

Vamos por partes esclarecendo suas dúvidas:

O método join e o retorno de um objeto Dados:

Sim, ao chamar Dados.join, você está indicando que quer que dados_fusao seja um novo objeto da classe Dados. Por exemplo, o método join faz return Dados(combined_list, 'list'). Isso instancia a classe Dados e retorna esse objeto; portanto dados_fusao será uma instância de Dados.

Uso de método estático:

Como o método join não precisa acessar nenhuma instância específica da classe Dados (não usa self), ele é definido como estático. Isso é útil quando a operação que você deseja realizar é mais relacionada à classe em si do que a uma instância específica. Assim, join pode ser chamado diretamente da classe Dados, sem precisar de uma instância específica.

dados = self.path e self.path = 'lista em memoria':

No primeiro trecho, a linha dados = self.path está atribuindo à variável dados o conteúdo de self.path. Isso é feito porque, quando o tipo de dados é 'list', self.path já contém os dados passados ao criar o objeto Dados. A linha self.path = 'lista em memoria' redefine o atributo path para indicar que os dados agora estão sendo mantidos na memória, e não em um arquivo externo. Isso é uma forma de documentar internamente que os dados foram carregados e estão prontos para uso, sem referência a um arquivo específico.

Espero ter ajudado e qualquer dúvida, compartilhe no fórum.

Até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!