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

Erro de AttributeError

Quando executo

avaliador.avalia(leilao)

É gerado o erro

Traceback (most recent call last):

  File "<ipython-input-4-4c021a7b4680>", line 1, in <module>
    avaliador.avalia(leilao)

  File "(...)", line 40, in avalia
    if lance.valor > self.maior_lance:

AttributeError: 'Avaliador' object has no attribute 'maior_lance'

Segue os scripts:

Principal

from dominio import Usuario, Lance, Leilao, Avaliador

gui = Usuario('Guilherme')
fabio = Usuario('Fabio')

lance_gui = Lance(gui, 100.0)
lance_fabio = Lance(fabio, 250)


leilao = Leilao('celular')
leilao.lances.append(lance_gui)
leilao.lances.append(lance_fabio)


for lance in leilao.lances:
    print(f'O usuário {lance.usuario.nome} deu lance de {lance.valor}')


avaliador = Avaliador()

avaliador.avalia(leilao)

dominio

import sys

class Usuario:

    def __init__(self, nome):
        self.__nome = nome

    @property
    def nome(self):
        return self.__nome


class Lance:

    def __init__(self, usuario, valor):
        self.usuario = usuario
        self.valor = valor


class Leilao:

    def __init__(self, descricao):
        self.descricao = descricao
        self.__lances = []

    @property
    def lances(self):
        return self.__lances


class Avaliador:

    def __int__(self):
        self.maior_lance = sys.float_info.min
        self.menor_lance = sys.float_info.max

    def avalia(self, leilao: Leilao):    

        for lance in leilao.lances:
            if lance.valor > self.maior_lance:
                self.maior_lance = lance.valor
            elif lance.valor < self.menor_lance:
                self.menor_lance = lance.valor

Alguém sabe me ajudar?

3 respostas
solução!

Olá Fabio,

Acredito que o problema seja apenas uma letra faltando no def __int__(self): da classe Avaliador, o correto seria __init__ no lugar de __int__

Putz, Fiquei um tempão procurando e não notei que era essa letra.

Desculpe por nao notar.

Abs

Sem problemas, isso é algo muito comum de acontecer, com o tempo a gente vai se acostumando a "seguir" a mensagem de erro até a causa.

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