Python-eigenschap ()

De eigenschap () construct retourneert het eigenschap attribuut.

De syntaxis van property()is:

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

Aanbevolen literatuur: Python @property: hoe te gebruiken en waarom?

property () Parameters

Er zijn property()vier optionele parameters nodig:

  • fget (optioneel) - Functie om de attribuutwaarde op te halen. Standaard ingesteld op None.
  • fset (optioneel) - Functie voor het instellen van de attribuutwaarde. Standaard ingesteld op None.
  • fdel (optioneel) - Functie voor het verwijderen van de attribuutwaarde. Standaard ingesteld op None.
  • doc (optioneel) - Een string die de documentatie (docstring) voor het attribuut bevat. Standaard ingesteld op None.

Retourwaarde van eigenschap ()

property() geeft het eigenschapkenmerk terug van de gegeven getter, setter en deleter.

  • Als er geen argumenten zijn opgegeven, property()wordt een kenmerk van een basiseigenschap geretourneerd dat geen getter, setter of deleter bevat.
  • Als doc niet wordt opgegeven, property()wordt de docstring van de getter-functie gebruikt.

Voorbeeld 1: attribuut maken met getter, setter en 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

Uitvoer

 De naam krijgen De naam is: Adam Naam instellen op Jan Naam verwijderen 

Hier wordt _name gebruikt als de privévariabele voor het opslaan van de naam van de persoon.

We stellen ook:

  • een getter-methode get_name()om de naam van de persoon te krijgen,
  • een setter-methode set_name()om de naam van de persoon in te stellen,
  • een del_name()verwijderingsmethode om de naam van de persoon te verwijderen.

Nu stellen we een nieuwe eigenschapkenmerknaam in door de property()methode aan te roepen .

Zoals getoond in het programma, verwijst p.nameintern naar oproepen get_name()als getter, set_name()als setter en del_name()als deleter via de afgedrukte uitvoer die aanwezig is in de methoden.

Voorbeeld 2: @property decorateur gebruiken

In plaats van te gebruiken property(), kunt u de Python-decorateur @propertygebruiken om de getter, setter en deleter toe te wijzen.

 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

Uitvoer

 De naam krijgen De naam is: Adam Naam instellen op Jan Naam verwijderen 

Hier hebben we in plaats van te gebruiken property()de @propertydecorateur gebruikt.

Ten eerste specificeren we dat de name()methode ook een attribuut is van Persoon. Dit wordt gedaan door @propertyde methode getter te gebruiken zoals weergegeven in het programma.

Vervolgens gebruiken we de attribuutnaam om de setter en de deleter te specificeren.

Dit wordt gedaan door te gebruiken @name.settervoor de setter-methode en @name.deletervoor de deleter-methode.

Let op, we hebben dezelfde methode name()met verschillende definities gebruikt voor het definiëren van de getter, setter en deleter.

Nu, wanneer we het gebruiken p.name, roept het intern de juiste getter, setter en deleter aan, zoals wordt getoond door de afgedrukte uitvoer die aanwezig is in de methode.

Interessante artikelen...