Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida no código aula07 item 04

Colegas!

no código a seguir:

def eq(self,outro): if(type(outro) != ContaSalario): return False return self._codigo == outro._codigo and self._saldo == outro._saldo

porque o return=false? não seria TRUE?

Não entendi a semântica da "coisa". Agradeço as respostas

2 respostas
solução!

Oi Nicholas, tudo bem?

Entendo que o código possa parecer um pouco confuso à primeira vista, mas vamos esclarecer isso juntos.

A função __eq__ é um método especial em Python que é usado para comparar se dois objetos são iguais. No código que você compartilhou, estamos sobrescrevendo este método para definir o que significa para duas instâncias da classe ContaSalario serem iguais.

A linha if(type(outro) != ContaSalario): está verificando se o objeto outro que estamos comparando é uma instância da classe ContaSalario. Se não for, o método retorna False. Isso significa que, se tentarmos comparar uma ContaSalario com qualquer outro tipo de objeto (uma string, um número, uma lista, etc.), o método dirá que eles não são iguais, o que faz sentido, pois estamos definindo igualdade no contexto de uma ContaSalario.

Agora, se outro for uma ContaSalario, nós prosseguimos para a linha return self._codigo == outro._codigo and self._saldo == outro._saldo. Aqui estamos dizendo que duas ContaSalario são iguais se, e somente se, seus códigos e saldos forem iguais.

A ideia aqui é que estamos personalizando o que significa igualdade para a nossa classe ContaSalario.

Espero que tenha te ajudado.

Um abraço e bons estudos.

Grato pela resposta, Lorena

Eu não me atentei ao mínimo detalhe: "!=" que é o diferencial aí no código.

Agradeço a atenção.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software