Question

Je connais @staticmethod, @classmethod et @property, mais uniquement grâce à une documentation dispersée. Quels sont tous les décorateurs de fonctions intégrés à Python? Est-ce que c'est dans la documentation? Existe-t-il une liste à jour quelque part?

Était-ce utile?

La solution

Je ne pense pas. Les décorateurs ne diffèrent pas des fonctions ordinaires, vous ne les appelez que de façon plus sophistiquée.

Pour les trouver tous, essayez de chercher dans la liste des Fonctions intégrées , car Vous pouvez voir dans le glossaire Python la syntaxe du décorateur n'est qu'un sucre syntaxique, comme les deux définitions suivantes créer des fonctions égales (copie de cet exemple du glossaire):

def f(...):
    ...
f = staticmethod(f)

@staticmethod
def f(...):

Ainsi, toute fonction intégrée qui renvoie une autre fonction peut être utilisée comme décorateur. La question est: est-il judicieux de l'utiliser de cette façon? : -)

Le

module functools contient des fonctions pouvant être utilisées en tant que décorateurs, mais elles ne t intégrés que vous avez demandés.

Autres conseils

Ils ne sont pas intégrés, mais cette bibliothèque d'exemples de décorateurs est très bonne .

Comme le dit Abgan, indique , le dans la liste des fonctions est probablement le meilleur endroit pour regarder. Bien que les décorateurs puissent également être implémentés en tant que classes, leur exhaustivité n’est pas garantie.

Les décorateurs ne sont même pas obligés de retourner une fonction. J'ai déjà utilisé @atexit.register auparavant.

Il n’existe pas de liste de tous les décorateurs. Il n'y a pas de liste de toutes les fonctions. Il n'y a pas de liste de toutes les classes.

Les décorateurs sont un outil pratique pour définir un aspect commun à toutes les fonctions, méthodes ou classes. Il y a les décorateurs intégrés. De plus, il y a un certain nombre de décorateurs cools et inutiles. De la même manière, il y a un certain nombre de classes cool et inutiles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top