Propriété Python ()

La construction property () renvoie l'attribut de propriété.

La syntaxe de property()est:

 property (fget = None, fset = None, fdel = None, doc = None)

Lecture recommandée: Python @property: comment l'utiliser et pourquoi?

property () Paramètres

Le property()prend quatre paramètres facultatifs:

  • fget (facultatif) - Fonction pour obtenir la valeur d'attribut. La valeur par défaut est None.
  • fset (facultatif) - Fonction de définition de la valeur d'attribut. La valeur par défaut est None.
  • fdel (facultatif) - Fonction de suppression de la valeur d'attribut. La valeur par défaut est None.
  • doc (facultatif) - Une chaîne qui contient la documentation (docstring) pour l'attribut. La valeur par défaut est None.

Valeur renvoyée par la propriété ()

property() renvoie l'attribut de propriété à partir du getter, du setter et du deleter donnés.

  • Si aucun argument n'est donné, property()renvoie un attribut de propriété de base qui ne contient aucun getter, setter ou deleter.
  • Si doc n'est pas fourni, property()prend la docstring de la fonction getter.

Exemple 1: créer un attribut avec getter, setter et deleter

 class Person: def __init__(self, name): self._name = name def get_name(self): print('Getting name') return self._name def set_name(self, value): print('Setting name to ' + value) self._name = value def del_name(self): print('Deleting name') del self._name # Set property to use get_name, set_name # and del_name methods name = property(get_name, set_name, del_name, 'Name property') p = Person('Adam') print(p.name) p.name = 'John' del p.name

Production

 Obtention du nom Le nom est: Adam Définition du nom sur John Suppression du nom 

Ici, _name est utilisé comme variable privée pour stocker le nom de Person.

Nous définissons également:

  • une méthode getter get_name()pour obtenir le nom de la personne,
  • une méthode de setter set_name()pour définir le nom de la personne,
  • une méthode del_name()de suppression pour supprimer le nom de la personne.

Maintenant, nous définissons un nouveau nom d'attribut de propriété en appelant la property()méthode.

Comme indiqué dans le programme, référencer en p.nameinterne les appels en get_name()tant que getter, en set_name()tant que setter et en del_name()tant que deleter via la sortie imprimée présente dans les méthodes.

Exemple 2: Utilisation du décorateur @property

Au lieu d'utiliser property(), vous pouvez utiliser le décorateur Python @propertypour affecter le getter, le setter et le deleter.

 class Person: def __init__(self, name): self._name = name @property def name(self): print('Getting name') return self._name @name.setter def name(self, value): print('Setting name to ' + value) self._name = value @name.deleter def name(self): print('Deleting name') del self._name p = Person('Adam') print('The name is:', p.name) p.name = 'John' del p.name

Production

 Obtention du nom Le nom est: Adam Définition du nom sur John Suppression du nom 

Ici, au lieu d'utiliser property(), nous avons utilisé le @propertydécorateur.

Tout d'abord, nous spécifions que la name()méthode est également un attribut de Person. Cela se fait en utilisant @propertyavant la méthode getter comme indiqué dans le programme.

Ensuite, nous utilisons le nom d'attribut pour spécifier le setter et le deleter.

Cela se fait en utilisant @name.setterpour la méthode setter et @name.deleterpour la méthode deleter.

Remarquez, nous avons utilisé la même méthode name()avec des définitions différentes pour définir le getter, le setter et le deleter.

Maintenant, chaque fois que nous l'utilisons p.name, il appelle en interne le getter, le setter et le deleter appropriés, comme indiqué par la sortie imprimée présente dans la méthode.

Articles intéressants...