infelizmente não funcionou, apareceu essa mensagem de erro:
PS C:\Users\windows 10\Desktop\OO-sabor-express> & "C:/Users/windows 10/AppData/Local/Programs/Python/Python312/python.exe" "c:/Users/windows 10/Desktop/OO-sabor-express/app.py"
Nome do restaurante | Categoria | Avaliação | Status
PS C:\Users\windows 10\Desktop\OO-sabor-express> & "C:/Users/windows 10/AppData/Local/Programs/Python/Python312/python.exe" "c:/Users/windows 10/Desktop/OO-sabor-express/app.py"
Nome do restaurante | Categoria | Avaliação | Status
Traceback (most recent call last):
File "c:\Users\windows 10\Desktop\OO-sabor-express\app.py", line 23, in main()
File "c:\Users\windows 10\Desktop\OO-sabor-express\app.py", line 20, in main
Restaurante.listar_restaurantes()
File "c:\Users\windows 10\Desktop\OO-sabor-express\modelos\restaurantes.py", line 19,
in listar_restaurantes
print(f'{restaurante.nome.ljust(25)} | {restaurante.categoria.ljust(25)} | {str(restaurante.media_avaliacoes).ljust(25)} | {restaurante.status()} ')
^^^^^^^^^^^^^^^^^^^^
TypeError: 'str' object is not callable
PS C:\Users\windows 10\Desktop\OO-sabor-express>
vou colocar as outras partes do código
from modelos.restaurantes import Restaurante
restaurante_mexicano = Restaurante('5 de mayo', 'mexicano')
restaurante_praca = Restaurante('praça', 'Fast Food')
restaurante_pizza = Restaurante('PIZZA PLACE', 'Pizzaria')
restaurante_japones = Restaurante('Pito Pequeno','Japonês')
restaurante_japones.alternar_status()
restaurante_japones.receber_avalicao('Away', 5)
restaurante_japones.receber_avalicao('Ícaro', 8)
restaurante_japones.receber_avalicao('Biridin', 7)
restaurante_japones.receber_avalicao('Branca', 9)
restaurante_japones.receber_avalicao('Tigra', 3)
restaurante_japones.receber_avalicao('Pipito', 10)
restaurante_japones.receber_avalicao('Sisay', 10)
restaurante_japones.receber_avalicao('Antonela', 5)
restaurante_japones.receber_avalicao('Vanila', 3)
def main():
Restaurante.listar_restaurantes()
if __name__ == '__main__':
main()
class Avaliacao:
def __init__(self, cliente, nota):
self._cliente = cliente
self._nota = nota
```
from modelos.avaliacao import Avaliacao
class Restaurante:
restaurantes = []
def __init__(self, nome, categoria):
self.nome = nome.title()
self.categoria = categoria.upper()
self._status = False
Restaurante.restaurantes.append(self)
self._avaliacao = []
def __str__(self):
return f'Restaurante: {self.nome} | Categoria: {self.categoria}'
def listar_restaurantes():
print(f'{'Nome do restaurante'.ljust(25)} | {'Categoria'.ljust(25)} | {'Avaliação'.ljust(25)} | {'Status'} ')
for restaurante in Restaurante.restaurantes:
print(f'{restaurante.nome.ljust(25)} | {restaurante.categoria.ljust(25)} | {str(restaurante.media_avaliacoes).ljust(25)} | {restaurante.status} ')
@property
def status(self):
return 'Ativado' if self._status else 'Inativo'
def alternar_status(self):
self._status = not self._status
def receber_avalicao(self, cliente, nota):
avaliacao = Avaliacao(cliente, nota)
self._avaliacao.append(avaliacao)
@property
def media_avaliacoes(self):
if not self._avaliacao:
return 'Sem Avaliações no momento'
soma_notas = sum(avaliacao._nota for avaliacao in self._avaliacao)
quantidade_notas = len(self._avaliacao)
media = round(soma_notas / quantidade_notas, 1)
return media
aí estão os 3 códigos, e se eu não uso o ljust todo o resto funciona