4
respostas

@property da erro no codigo exibir_cardapio()

Não entendi o que esta acontecendo aqui, o resultado esta como deveria. Não esta faltando nenhuma palavra... Mas, mesmo assim, o VS dá um erro.

Cardápio do Restaurante Praça

  1. Nome: Suco de Melancia | Preço : R$16.99 | Tamanho: Grande
  2. Nome: Pizza da Casa | Preço : R$45.0 | Descrição: Melhor Pizza do Brasil e do Mundo

Traceback (most recent call last): File "c:\Users\T.I\Downloads\Python\POO_Sabor_Express.py", line 20, in main() File "c:\Users\T.I\Downloads\Python\POO_Sabor_Express.py", line 17, in main restaurante_praça.exibir_cardapio() TypeError: 'NoneType' object is not callable

Na linha 17 só tem isso:

def main():
    restaurante_praça.exibir_cardapio()

O mais engraçado que o código só esta dando erro quando eu adiciono o @property. Se eu retirar essa parte, o VS não acusa nenhum erro:

  @property
  def exibir_cardapio(self):
    print(f'Cardapio do restaurante {self._nome}\n')
       for i,item in enumerate(self._cardapio, start= 1):
           if hasattr(item,'descricao'):
             mensagem_prato = f'{i}. Nome: {item._nome} | Preço : R${item._preco} | Descrição: {item.descricao}'
             print (mensagem_prato) 
           else:
             mensagem_bebida = f'{i}. Nome: {item._nome} | Preço : R${item._preco} | Tamanho: {item._tamanho}' 
             print (mensagem_bebida)
4 respostas

Também estou com o mesmo problema!

O erro ocorre porque você está chamando a função exibir_cardápio() com parênteses, o @property transforma a função em uma propriedade, o que significa deve ser acessado sem parênteses, como se fosse um atributo.

Aparece "Getter should return or yield something"

Está acontecendo pois vc está usando o parêntesis (determina função) pra chamar uma propriedade, que não precisa de parâmetros. por isso ele não aceita o 'NoneType' (vazio entre os parêntesis) e da esse erro.