Maison >développement back-end >Tutoriel Python >Comment utiliser la fonction property() pour définir les accesseurs d'attribut en Python

Comment utiliser la fonction property() pour définir les accesseurs d'attribut en Python

王林
王林original
2023-08-21 23:48:22796parcourir

Comment utiliser la fonction property() pour définir les accesseurs dattribut en Python

Comment utiliser la fonction property() pour définir des accesseurs d'attributs en Python

En Python, nous rencontrons souvent des situations où nous devons définir des propriétés. Les propriétés décrivent les caractéristiques et l'état d'un objet et peuvent être lues ou modifiées via les accesseurs correspondants. En Python, nous pouvons utiliser la fonction @property() pour définir des accesseurs d'attributs, ce qui rend les opérations de lecture et de modification des attributs plus concises et flexibles. La fonction

@property() est la fonction de décorateur intégrée de Python, utilisée pour convertir des méthodes en propriétés. En utilisant le décorateur @property(), nous pouvons définir une méthode normale en tant que propriété, afin qu'elle puisse être appelée comme une variable lors de l'utilisation de la propriété, sans utiliser la syntaxe d'appel de fonction.

Utilisons un exemple pour montrer comment utiliser la fonction @property() pour définir un accesseur de propriété.

class Circle:
    def __init__(self, radius):
        self.radius = radius
    
    @property
    def diameter(self):
        return self.radius * 2
    
    @diameter.setter
    def diameter(self, value):
        self.radius = value / 2
    
    @property
    def area(self):
        return 3.14 * (self.radius ** 2)

Dans l'exemple ci-dessus, nous avons défini une classe Circle, qui contient trois attributs : rayon, diamètre et aire. L'attribut rayon est utilisé pour représenter le rayon d'un cercle, l'attribut diamètre est utilisé pour représenter le diamètre d'un cercle et l'attribut zone est utilisé pour représenter l'aire d'un cercle.

Grâce au décorateur @property(), nous définissons la méthode Diameter comme accesseur de la propriété Diameter. Lorsque nous appelons circle.diameter, nous appelons en fait la méthode Diameter et renvoyons sa valeur de retour. De même, nous pouvons également utiliser le décorateur @diameter.setter pour définir la méthode diamètre comme modificateur de la propriété diamètre. Lorsque nous attribuons une valeur à circle.diameter, nous appelons en fait la méthode setter de la méthode Diameter.

De même, nous pouvons également utiliser le décorateur @property pour définir la méthode Area comme accesseur de la propriété Area. Grâce au décorateur @property, nous pouvons définir une méthode comme une propriété en lecture seule, qui autorise uniquement la lecture et n'autorise pas la modification.

Testons l'utilisation de ces propriétés :

circle = Circle(5)
print(circle.radius) # 输出:5
print(circle.diameter) # 输出:10
circle.diameter = 20
print(circle.radius) # 输出:10
print(circle.area) # 输出:314.0

Dans l'exemple ci-dessus, nous avons d'abord créé un objet Circle et spécifié un rayon de 5. Ensuite, les propriétés ont été accessibles via circle.diameter et circle.area, et leurs valeurs ont été imprimées.

Lorsque nous exécutons circle.diameter = 20, la méthode setter de la méthode diamètre est effectivement appelée et la valeur de l'attribut diamètre est modifiée à 20. Par la suite, nous imprimons à nouveau la valeur de circle.radius et constatons qu'elle a été modifiée à 10.

Enfin, nous imprimons la valeur de circle.area et nous pouvons voir que le résultat est 314,0, ce qui est cohérent avec l'aire attendue du cercle.

Grâce à l'exemple ci-dessus, nous pouvons voir que définir des accesseurs de propriété via la fonction @property() peut rendre le code plus concis et clair, et fournir une interface plus flexible pour accéder et modifier les propriétés. Dans le même temps, en utilisant le décorateur @property, nous pouvons également restreindre les autorisations de lecture et d'écriture des propriétés, rendant le code plus sécurisé et fiable. Par conséquent, utiliser la fonction @property() pour définir des accesseurs de propriété en Python est une technique de programmation courante qui mérite d'être maîtrisée et appliquée.

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