2
respostas

Dúvida sobre a função dar_likes

Boa noite!

Qual seria a diferença nesse cenaráio entre utilizar a função:

def dar_likes(self):
        self._like += 1 

E criar um setter para a property do like?

@likes.setter
def like(self):
   self._like += 1

No caso, seria porque com a função, sabemos o valor que estamos adicionando e apenas com o likes, estamos dando abertura para setarem um valor maior na mão?

2 respostas

Eu testei aqui e ele não permite alterar / setar o valor com o setter implementado dessa forma, acho que seja por isso que ele declarou um método de classe.

Oi Victor, tudo bem com você?

O setter é para alterar o valor de algum atributo e isso irá se refletir quando você faz a operação de atribuição. E ele recebe por padrão um parâmetro para fazer essa troca. Por exemplo:

@like.setter
    def like(self, like):
        self._like = like

Quando no método principal você chamar o objeto.like e atribuir um valor ele, por exemplo: objeto.like = 3. O que o Python internamente faz é trocar o valor antigo que estava em self._like por esse novo valor passado, no caso o número 3.

Por isso não é possível utilizar o setter da forma apresentada por você,pois o setter espera uma operação de atribuição. Já com o método, você irá apenas invocá-lo, por exemplo: objeto.dar_likes() e com isso, aumentará automaticamente a quantidade de likes.

Qualquer dúvida é só falar, estou a disposição. Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software