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?
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?
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.
@< 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:
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.