Boa noite, apesar do meu codigo estar fucionando bem, gostaria de entender o porque tive que passar para float o meu atributo e o professor não. Sei que para utilizar o Sum não se pode utilizar strings, por isso o parse para o float. Mas não vi o professor realizar esse parse e o codigo funcionou. Gostaria de perceber melhor se há outro jeito de utilizar o sum.
classe restaurante
import os
import csv
from Modelos.avaliacao import Avaliacao
class Restaurante:
restaurantes = []
def __init__(self, nome,categoria):
self._nome = nome.title()
self._categoria = categoria.title()
self._ativo = False
self._avaliacao = []
Restaurante.restaurantes.append(self) # faz o append do proprio restaurante
def __str__(self):
return f"{self._nome} | {self._categoria}"
@classmethod
def listar_restaurantes(cls):
print(f"{'Nome'.ljust(22)} | {'Categoria'.ljust(22)} | {'Avaliação'.ljust(25)} | Status")
for restaurante in cls.restaurantes:
print(f"{restaurante._nome.ljust(22)} | {restaurante._categoria.ljust(22)} | {str(restaurante.media_avaliacao).ljust(25)} | {restaurante.ativo}")
@property
def ativo(self):
return'✅'if self._ativo else '❎'
def alternar_estado(self):
self._ativo = not self._ativo
def receber_avaliacao(self,cliente,nota):
avaliacao = Avaliacao(cliente,nota)
self._avaliacao.append(avaliacao)
@property
def media_avaliacao(self):
if not self._avaliacao:
return 0
# soma_das_notas = sum(avaliacao._nota for avaliacao in self._avaliacao)
soma_das_notas = sum(float(avaliacao._nota) for avaliacao in self._avaliacao)
qtd_notas =len(self._avaliacao)
media = round(soma_das_notas / qtd_notas, 1)
return media
classe avaliação
class Avaliacao:
def __init__(self,cliente,nota):
self._cliente = cliente
self._nota = nota
main
from Modelos.restaurante import Restaurante
restaurante_01 = Restaurante('Sparrow','Marine')
# restaurante_02 = Restaurante('Tanjiro','Japanese')
# restaurante_03 = Restaurante('Bulls','Vegan')
restaurante_01.alternar_estado()
restaurante_01.receber_avaliacao('jay','10')
restaurante_01.receber_avaliacao('law','10')
def main():
Restaurante.listar_restaurantes()
if __name__ == '__main__':
main()
Desde já agradeço.