Dans cet article, je discuterai de l'utilisation courante des décorateurs de fonctions, en particulier du décorateur de propriétés de classe, ainsi que de la différence entre l'utilisation directe du décorateur ou de la méthode de classe.
Ça vous semble familier, n'est-ce pas ?
Le décorateur @propery omniprésent se retrouve partout, mais comment ça marche concrètement ?
Quelles sont les différences entre l'utilisation de @property ou l'utilisation directe de la méthode de classe property() ?
Voici un exemple de fonction de décorateur standard.
Sous le capot de Python, la fonction qui appelle le décorateur (c'est-à-dire la fonction externe) est enveloppée de code supplémentaire en appelant le décorateur et en passant la fonction externe en tant que paramètre. Le décorateur créera une fonction enveloppée avec toute sa nouvelle logique et la renverra comme valeur de la fonction externe.
La méthode de propriété de classe est une fonction Python intégrée qui nous permet de définir des méthodes getter, setter et deleter pour les attributs de classe, et de les lier aux méthodes magiques par défaut de la classe.
def get_my_value(self): return self._my_value my_value = property(get_my_value)
est compris par le compilateur Python comme
def __get__(self,obj): return self.fget(obj)
Essentiellement, la méthode property() crée un objet qui agit comme un proxy entre le nom de l'attribut et les données sous-jacentes. Cela nous permet donc d'ajouter un comportement personnalisé et une logique de validation qui ne seraient pas possibles avec les méthodes magiques par défaut.
Comme nous le voyons ci-dessus, la méthode des propriétés nous permet d'écraser la méthode magique par défaut et d'étendre ses fonctionnalités. Nous avons également démontré comment un décorateur enveloppe la logique fonctionnelle dans une nouvelle fonction. Lorsqu'une méthode getter, setter ou deleter est appelée avec le décorateur @property, Python la traduit en un appel à la méthode property() en interne et crée un objet de propriété qui encapsule la méthode dans une fonction qui peut écraser les méthodes magiques par défaut.
Bien que nous ayons démontré que l'utilisation de la méthode @property decorator ou property() est équivalente, le décorateur propose une utilisation plus simple, et permet au code au sein de la classe d'être plus lisible. Il s'agit donc d'une bonne pratique et d'une convention de codage et le décorateur doit être utilisé sauf s'il existe une exigence spécifique du scénario.
https://www.geeksforgeeks.org/python-property-decorator-property/
Générateur d'images d'en-tête d'article de blog
Créateur d'extraits de code
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!