Maison >développement back-end >Tutoriel Python >Comment fonctionne le décorateur `@property` en Python ?

Comment fonctionne le décorateur `@property` en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-21 05:30:10496parcourir

How Does the `@property` Decorator Function in Python?

Comment fonctionne le décorateur @property en Python

Le décorateur @property est un outil puissant pour créer des attributs en lecture seule ou en lecture-écriture sur les cours Python. Il simplifie la création de propriétés en les enveloppant dans une fonction de décorateur.

Comment fonctionne le décorateur de propriété intégré

La fonction intégrée property() crée un objet descripteur. Cet objet a trois méthodes :

  • getter : Une fonction qui renvoie la valeur de la propriété.
  • setter : Une fonction qui définit la valeur de la propriété.
  • deleter : Une fonction qui supprime le property.

Lorsqu'elle est utilisée comme décorateur, property() prend une fonction comme argument. Cette fonction devient le getter de la propriété.

Comment fonctionne le décorateur @property

Le décorateur @property n'est qu'un sucre syntaxique pour le code suivant :

def foo(self): return self._foo
foo = property(foo)

La syntaxe @decorator remplace la fonction en cours de décoration par le descripteur spécial property() objet.

Création de propriétés avec des décorateurs

Pour créer des propriétés avec des décorateurs :

class C:
    @property
    def x(self):
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @x.deleter
    def x(self):
        del self._x
  • Le décorateur @property crée une fonction getter et l'attache à la propriété _x.
  • Le décorateur @x.setter crée un nouvel objet de propriété, en remplaçant le getter avec la fonction setter décoré.
  • Le décorateur @x.deleter crée un nouvel objet de propriété, remplaçant le getter par la fonction de suppression décorée.

Compréhension approfondie

La fonction property() renvoie un objet descripteur spécial. Cet objet a des méthodes supplémentaires, notamment getter, setter et deleter. Ces méthodes sont également des décorateurs, qui vous permettent de construire de manière incrémentielle un objet de propriété complet.

La syntaxe du décorateur de propriétés vous permet de créer des propriétés avec des décorateurs setter et deleter enchaînés. L'objet de propriété résultant est ensuite attaché à la classe en tant que descripteur, permettant l'obtention, la définition et la suppression d'attributs avec un comportement personnalisé.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn