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?

Foi útil?

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

Eles não são built-in, mas este biblioteca de exemplo decoradores é muito bom .

Como Abgan diz , a interna na lista de funções é provavelmente o melhor lugar para procurar. Embora, desde decoradores também podem ser implementados como classes, não é garantido para estar completa.

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top