Python ejendom ()

Ejendommen () -konstruktionen returnerer egenskabsattributten.

Syntaksen for property()er:

 egenskab (fget = Ingen, fset = Ingen, fdel = Ingen, doc = Ingen)

Anbefalet læsning: Python @property: Sådan bruges det og hvorfor?

egenskab () Parametre

Det property()tager fire valgfri parametre:

  • fget (valgfrit) - Funktion til at få attributværdien. Som standard er None.
  • fset (valgfrit) - Funktion til indstilling af attributværdien. Som standard er None.
  • fdel (valgfri) - Funktion til sletning af attributværdien. Som standard er None.
  • doc (valgfri) - En streng, der indeholder dokumentationen (docstring) for attributten. Som standard er None.

Returneringsværdi fra ejendom ()

property() returnerer egenskabsattributten fra den givne getter, setter og deleter.

  • Hvis der ikke gives argumenter, property()returnerer en baseegenskabsattribut, der ikke indeholder nogen getter, setter eller deleter.
  • Hvis doc ikke leveres, property()tager doktringen af ​​getter-funktionen.

Eksempel 1: Opret attribut med getter, setter og 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

Produktion

 Få navn Navnet er: Adam Indstiller navn til John Slet navn 

Her bruges _name som den private variabel til lagring af personens navn.

Vi indstiller også:

  • en getter-metode get_name()til at få navnet på personen,
  • en setter metode set_name()til at indstille navnet på personen,
  • en del_name()sletningsmetode til at slette personens navn.

Nu indstiller vi et nyt egenskabsattributnavn ved at kalde property()metoden.

Som vist i programmet henviser p.nameinternt til kald get_name()som getter, set_name()som setter og del_name()som deleter gennem det trykte output til stede inde i metoderne.

Eksempel 2: Brug af @property decorator

I stedet for at bruge property()kan du bruge Python-dekoratøren @propertytil at tildele getter, setter og 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

Produktion

 Få navn Navnet er: Adam Indstiller navn til John Slet navn 

Her, i stedet for at bruge property(), har vi brugt @propertydekoratøren.

For det første specificerer vi, at name()metoden også er en attribut for Person. Dette gøres ved hjælp af @propertyfør getter-metoden som vist i programmet.

Dernæst bruger vi attributnavnet til at specificere setter og sletning.

Dette gøres ved at bruge @name.settertil setter-metoden og @name.deletertil den deleter-metode.

Bemærk, at vi har brugt den samme metode name()med forskellige definitioner til at definere getter, setter og deleter.

Nu, når vi bruger p.namedet, kalder det internt den relevante getter, setter og deleter som vist med det trykte output, der findes i metoden.

Interessante artikler...