Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Porque a função media_avaliacoes precisa ser property?

Ainda não consegui entender o porque da função media_avaliacoes no código deste curso ser um property, qual seria a diferença caso não fosse?

@property
def media_avaliacoes(self):
    if not self._avaliacao:
        return 0
    soma_das_notas = sum(avaliacao._nota for avaliacao in self._avaliacao)
    quantidade_de_notas = len(self._avaliacao)
    media = round(soma_das_notas / quantidade_de_notas, 1)
    return media
2 respostas
solução!

Oi Nayara! Tudo certo?

A função media_avaliacoes é definida como uma @property para poder ser acessada como se fosse um atributo, sem a necessidade de chamá-la como um método (ou seja, sem usar parênteses). Isso torna o código mais limpo e intuitivo.

Por exemplo, ao invés de chamar restaurante.media_avaliacoes(), você pode simplesmente usar restaurante.media_avaliacoes. Isso é útil quando você quer que a média de avaliações seja tratada como uma característica do objeto, similar a um atributo, mas ainda quer calcular ou processar algo quando ela é acessada.

Se media_avaliacoes não fosse uma @property e fosse apenas um método comum, você teria que chamá-lo com parênteses para obter o valor, o que poderia ser menos intuitivo em alguns contextos, especialmente quando você está listando atributos de um objeto.

Além disso, ao usar @property, você pode encapsular a lógica de cálculo da média, protegendo a implementação interna e permitindo que, se necessário, você altere como a média é calculada sem afetar o resto do código que acessa essa propriedade.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Olá Armano, muito obrigada pela ótima explicação, agora entendi!