Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

@property @limite.setter @stathicmethod

Olá, eu finalizei o curso porém não ficou muito claro pra mim o que significam essas funções q usam o @, qual o objetivo de usar elas? Se não usa-las no código qual diferença?

1 resposta
solução!

Olá Josué, tudo bem com você?

Peço desculpas pela demora em lhe responder.

O decorator @property corresponde a função property() do python, quando usamos ela como decorator estamos adicionando funcionalidades “especiais” a um método, fazendo ele agir como getters ou setters sem precisar mudar sua sintaxe.

Para usarmos o @property temos que seguir algumas regras.

  • Podemos trabalhar com o apenas o @property, ou seja apenas com um método que retorna algo (getter).
  • Para termos um método do tipo setter, temos que ter declarado antes um método do tipo @property.
  • Quando declaramos um método do tipo setter a sintaxe do decorator deve ser conforme mostrado abaixo:

@< nome_do_metodo>.setter

Exemplo de @property do tipo getter

    @property
    def limite(self):
        print('Usando decorators para ver limite')
        return self.__limite

Terminal

from conta import Conta

conta = Conta(132, 'Ana', 1000)

conta.limite

Resultado

Usando decorators para ver limite
1000.0

Já o decorator do tipo setter, como por exemplo `@limite.setter`, trabalha com chave e valor, para usá-lo devemos informar o local onde está o objeto (self) e informar qual o novo valor.

Exemplo de @property do tipo setter


   @limite.setter
    def limite(self, limite):
        print('Usando decorators para mudar o limite')
        self.__limite = limite

Terminal

conta.limite = 500
Usando decorators para mudar o limite

Já o decorator @staticmethod será utilizado em métodos que não fazem referência a um objeto instanciado, no método criado não teremos o uso do self, será um método estático (sem atividade) direta no objeto e seu comportamento não possui dependência do objeto instanciado. Abaixo um exemplo de método estático.

    @staticmethod
    def codigos_bancos():
        return {'BB': '001', 'Caixa': '104', 'Bradesco': '237'}

Em resumo temos:

  • @property: Utilizado para definir um método como do tipo getter, que retorna algo.
  • @< nome_do_metodo >.setter: Utilizado para definir um método como do tipo setter, que insere um novo valor.
  • @staticmethod: Informa que aquele método é estático, não possui efeito sobre o objeto (self).

Para saber um pouco mais sobre o uso dos @property, recomendo a leitura dos seguintes artigos, estão em inglês, caso tenha dificuldade com o idioma recomendo o uso do tradutor do navegador.

Caso tenha dúvidas, encontro à disposição.

Abraços e bons estudos.

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