Python - Quais são as built-in decoradores? [fechadas]
Pergunta
Eu sei de @staticmethod
, @classmethod
e @property
, mas apenas através de documentação dispersa. Quais são todos os decoradores de função que são construídos em Python? É que nos docs? Existe uma lista up-to-date mantido em algum lugar?
Solução
Eu não penso assim. Decoradores não diferem das funções comuns, só chamá-los de uma forma mais extravagante.
Para encontrar todos eles tente pesquisar Built-in funções lista, porque, como você pode ver na Python glossário a sintaxe decorador é apenas um açúcar sintático, como as duas definições seguintes criar funções iguais (copiados este exemplo de glossário):
def f(...):
...
f = staticmethod(f)
@staticmethod
def f(...):
Assim, qualquer built-in função que retorna outra função pode ser usado como um decorador. A pergunta é - isso faz sentido usá-lo dessa forma? : -)
functools módulo contém algumas funções que podem ser usadas como decoradores, mas eles aren' t built-ins que você pediu.
Outras dicas
Decoradores nem sequer são obrigados a retornar uma função. Eu usei @atexit.register
antes.
Não existe tal coisa como uma lista de todos os decoradores. Não há nenhuma lista de todas as funções. Não há nenhuma lista de todas as classes.
Decoradores são uma ferramenta útil para a definição de um aspecto comum entre as funções, métodos ou classes. Há os decoradores embutidos. Além disso, há qualquer número de fresco e decoradores inúteis. Da mesma forma, há qualquer número de classes de frio e inúteis.