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

Aula 7 - Implementando o __lt__

O erro abaixo aparece ao rodar o código da aula 7. TypeError: '<' not supported between instances of 'ContaSalario' and 'ContaSalario'

Por gentileza, alguém poderia me ajudar?

código da aula 7

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

  def __eq__(self, outro):
    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_guilherme = ContaSalario(17)
conta_do_guilherme.deposita(500)

conta_da_daniela = ContaSalario(3)
conta_da_daniela.deposita(1000)

conta_do_paulo = ContaSalario(133)
conta_do_paulo.deposita(510)
for conta in sorted(contas):
  print(conta)
1 resposta
solução!

Fala, Cláudio, tudo bom?

Analisei o seu código e não indentifiquei o motivo do TypeError indicado. Identifiquei, no entanto, outro erro que é a não inicialização da variável contas (que está sendo usada no for).

Rodei seu código aqui com alguns acréscimos, e funcionou numa boa:

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

  def __eq__(self, outro):
    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_guilherme = ContaSalario(17)
conta_do_guilherme.deposita(500)

conta_da_daniela = ContaSalario(3)
conta_da_daniela.deposita(1000)

conta_do_paulo = ContaSalario(133)
conta_do_paulo.deposita(510)

contas = [conta_do_paulo, conta_da_daniela, conta_do_guilherme]

for conta in sorted(contas):
  print(conta)

print(conta_da_daniela == conta_do_paulo)
print(conta_da_daniela > conta_do_paulo)