Python eiendom ()

Eiendommen () -konstruksjonen returnerer eiendomsattributtet.

Syntaksen for property()er:

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

Anbefalt lesing: Python @property: Hvordan bruke den og hvorfor?

eiendom () Parametere

Det property()tar fire valgfrie parametere:

  • fget (valgfritt) - Funksjon for å få attributtverdien. Standardinnstillingen er None.
  • fset (valgfritt) - Funksjon for å stille inn attributtverdien. Standardinnstillingen er None.
  • fdel (valgfritt) - Funksjon for å slette attributtverdien. Standardinnstillingen er None.
  • doc (valgfritt) - En streng som inneholder dokumentasjonen (docstring) for attributtet. Standardinnstillingen er None.

Returverdi fra eiendom ()

property() returnerer eiendomsattributtet fra den gitte getter, setter og deleter.

  • Hvis ingen argumenter blir gitt, property()returnerer en baseegenskapsattributt som ikke inneholder noen getter, setter eller deleter.
  • Hvis doc ikke leveres, property()tar du doktringen av getter-funksjonen.

Eksempel 1: Lag attributt 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

Produksjon

 Få navn Navnet er: Adam Setter navn til John Sletter navn 

Her brukes _name som den private variabelen for å lagre navnet på personen.

Vi setter også:

  • en getter-metode for get_name()å få navnet på personen,
  • en settermetode for set_name()å angi navnet på personen,
  • en slettemetode for del_name()å slette navnet på personen.

Nå setter vi et nytt eiendomsattributtnavn ved å kalle property()metoden.

Som vist i programmet, refererer p.nameinternt til kall get_name()som getter, set_name()som setter og del_name()som deleter gjennom utskriften som er tilstede i metodene.

Eksempel 2: Bruk av @property decorator

I stedet for å bruke property()kan du bruke Python-dekoratøren @propertytil å 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

Produksjon

 Få navn Navnet er: Adam Setter navn til John Sletter navn 

Her, i stedet for å bruke property(), har vi brukt @propertydekoratøren.

Først spesifiserer vi at name()metoden også er et personattributt. Dette gjøres ved å bruke @propertyfør getter-metoden som vist i programmet.

Deretter bruker vi attributtnavnet til å spesifisere setter og sletter.

Dette gjøres ved å bruke @name.setterfor setter-metoden og @name.deleterfor deleter-metoden.

Legg merke til at vi har brukt den samme metoden name()med forskjellige definisjoner for å definere getter, setter og deleter.

Nå, når vi bruker p.namedet, kaller det internt den aktuelle getter, setter og deleter som vist av den trykte utgaven som er inne i metoden.

Interessante artikler...