Olá! Tenho uma dúvida em relação ao "hasattr".
from Cardápio import Comida, Bebida, Item_Cardapio
class Avaliacao:
def __init__(self, cliente, nota):
self.cliente = cliente
self.nota = nota
class Restaurantes:
lista = []
def __init__(self, nome, categoria):
self._nome = nome
self._categoria = categoria
self._ava = []
self._cardapio = []
Restaurantes.lista.append(self)
def __str__(self):
return f'{self._nome} | {self._categoria} | Média: {self.media()}'
def receber(self, cliente, nota):
if 0 <= nota <= 5:
avaliacao = Avaliacao(cliente, nota)
self._ava.append(avaliacao)
def media(self):
if not self._ava:
return 'Sem Avaliações'
soma = sum(avaliacao.nota for avaliacao in self._ava)
quantidade = len(self._ava)
total = round(soma / quantidade, 1)
return total
def adicionar(self, item):
if isinstance(item, Item_Cardapio):
self._cardapio.append(item)
@property
def mostrar_cardapio(self):
print(f'\nCardápio do Restaurante {self._nome}\n')
for i, item in enumerate(self._cardapio, start = 1):
if hasattr(item, 'descricao'):
mensagem_comida = f'{i}. Nome: {item._nome} | Preço: {item._preco} | Descrição: '
print(mensagem_comida)
else:
mensagem_bebida = f'{i}. Nome: {item._nome} | Preço: {item._preco} | Tamanho: '
print(mensagem_bebida)
pizza = Restaurantes('Pizza', 'Massa')
comida_pao = Comida('Pão', 6.00, 'O melhor pão da cidade')
pizza.receber('Pedro', 5)
pizza.receber('Marilia', 5)
pizza.receber('Felipe', 3)
pizza.adicionar(comida_pao)
bebida_melancia = Bebida('melancia', 5.00, 'médio')
pizza.adicionar(bebida_melancia)
pizza.mostrar_cardapio
Eu não preenchi a descrição e o tamanho só para fazer um teste.
Cardápio.py:
class Item_Cardapio:
def __init__(self, nome, preco):
self._nome = nome
self._preco = preco
class Comida(Item_Cardapio):
def __init__(self, nome, preco, descricao):
super().__init__(nome, preco)
self._descricao = descricao
def __str__(self):
return f'{self._nome} | {self._preco} | {self._descricao}'
class Bebida(Item_Cardapio):
def __init__(self, nome, preco, tamanho):
super().__init__(nome, preco)
self._tamanho = tamanho
def __str__(self):
return f'{self._nome} | {self._preco} | {self._tamanho}'
No terminal aparece o seguinte:
O "Tamanho" se repete duas vezes. Isso quer dizer que o "hasattr" não está funcionando para a comida e está indo direto para o "else"
Vocês poderiam me ajudar? Obrigado!