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

erro __lt__. Onde estou errando?

Estou tentando ver se a conta_do_maro é maior que a conta_da_joy, porém o erro persiste.

class ContaSalario: 

  def __init__(self, codigo):
    self._codigo = codigo
    self._saldo = 0

  def __eq__(self, outro):
    if type(outro) != ContaSalario:
      return False

    return self._codigo == outro._codigo and self._saldo == outro._saldo

  def _lt__(self, outro):
    return self._saldo < outro._saldo


  def deposita(self, valor):
    self._saldo += valor

  def __str__(self):
    return "[>>Codigo {} Saldo {}<<]".format(self._codigo, self._saldo)
conta_do_maro < conta_da_joy

`

TypeError Traceback (most recent call last) in () ----> 1 conta_do_maro < conta_da_joy

TypeError: '<' not supported between instances of 'ContaSalario' and 'ContaSalario'

3 respostas

Oi Joyci. Tudo bem?

O erro está ocorrendo pois você comparou duas instâncias da classe ContaSalario.

Se a idéia é verificar qual a conta tem o saldo maior, você pode criar um método "consulta_saldo()".

Novo método

  def consulta_saldo(self):
    return self._saldo

Exemplo de comparação

print({conta_do_maro.consulta_saldo()} < {conta_da_joy.consulta_saldo()})

Existem várias formas de realizar essa comparação, essa é apenas uma das possibilidades. :)

Espero ter ajudado! Bons estudos.

solução!

Seu Código:

def _lt__(self, outro):
    return self._saldo < outro._saldo

Corrigido:

def __lt__(self, outro):
    return self._saldo < outro._saldo

Erro de digitação, faltou um underscore. O método "menor que" é um "dunder", double under. Depois avisa se deu certo.

Obrigada Rapazes!!! Poxa, uma desatenção, obrigada pela ajudaa!!!