1
resposta

Não existe atributo nome

Aqui eu creio que seja porque eu estou utilizando a versão .7 do Python, porém mesmo no curso não faz muito sentido pra mim. O atributo nome se tornou privado e após foi criado um GET para retornar o valor do atributo nome, até ai ok. Porém quando vou fazer o Loop for para iterar nas informações, ele aparece que o atributo nome não existe.

Segue código do módulo 1.

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

E o módulo principal com o código

from principal import Usuario,Lance,Leilao

usuario_bruno = Usuario("Bruno")
usuario_Karen = Usuario("Karen")


lance_do_bruno = Lance(usuario_bruno.nome,150)
lance_da_karen = Lance(usuario_Karen.nome,200)

leilao_de_celular = Leilao("Leilão de Celular")

leilao_de_celular.lances.append(lance_do_bruno)
leilao_de_celular.lances.append(lance_da_karen)

for lance in leilao_de_celular.lances:
    print(f"O usuario {lance.usuario.nome} deu um lance {lance.valor}")
1 resposta

O problema é que você está criando os objetos lance_do_bruno e lance_da_karen incorretamente

lance_do_bruno = Lance(usuario_bruno.nome,150)
lance_da_karen = Lance(usuario_Karen.nome,200)

A sua classe Lance espera como argumento um objeto do tipo Usuario e o valor do lance, mas o que você está passando é o Usuario.nome, quando deveria passar somente Usuario.

Troque as duas linhas do seu código por:

lance_do_bruno = Lance(usuario_bruno, 150)
lance_da_karen = Lance(usuario_Karen, 200)

Testa e depois posta para nós o resultado, please :D