Vlastnosť Pythonu ()

Konštrukt property () vráti atribút vlastnosti.

Syntax property()je:

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

Odporúčané čítanie: Python @property: Ako ho používať a prečo?

property () Parametre

property()Trvá štyri voliteľné parametre:

  • fget (voliteľné) - Funkcia na získanie hodnoty atribútu. Predvolené hodnoty pre None.
  • fset (voliteľné) - Funkcia pre nastavenie hodnoty atribútu. Predvolené hodnoty pre None.
  • fdel (voliteľné) - funkcia na odstránenie hodnoty atribútu. Predvolené hodnoty pre None.
  • doc (voliteľné) - Reťazec, ktorý obsahuje dokumentáciu (docstring) k atribútu. Predvolené hodnoty pre None.

Vrátená hodnota z vlastnosti ()

property() vráti atribút vlastnosti z daného getra, setra a deletera.

  • Ak nie sú uvedené žiadne argumenty, property()vráti atribút základnej vlastnosti, ktorý neobsahuje žiadny geter, setter ani deleter.
  • Ak dokument nie je poskytnutý, property()použije dokumentačný reťazec funkcie getter.

Príklad 1: Vytvorte atribút pomocou príkazu getter, setter a 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

Výkon

 Získanie mena Meno je: Adam Nastavenie mena na John Vymazanie mena 

Tu sa _name používa ako súkromná premenná na ukladanie mena osoby.

Nastavili sme tiež:

  • getrova metóda get_name()na získanie mena osoby,
  • metóda nastavovania set_name()na nastavenie mena osoby,
  • metóda deleter del_name()na odstránenie mena osoby.

Teraz sme vyvolaním property()metódy nastavili nový názov atribútu vlastnosti .

Ako je uvedené v programe, p.nameinterné referencovanie volá get_name()ako getter, set_name()setter a del_name()ako deleter prostredníctvom tlačeného výstupu prítomného vo vnútri metód.

Príklad 2: Použitie dekorátora @property

Namiesto použitia property()môžete @propertyna priradenie getra, setra a deletera použiť dekorátor Pythonu .

 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

Výkon

 Získanie mena Meno je: Adam Nastavenie mena na John Vymazanie mena 

Tu sme namiesto použitia property()použili @propertydekoratér.

Najprv určíme, že name()metóda je tiež atribútom Person. To sa deje pomocou @propertymetódy getra uvedenej v programe.

Ďalej pomocou názvu atribútu zadáme setter a deleter.

To sa deje pomocou @name.settermetódy setter a @name.deletermetódy deleter.

Všimnite si, že name()na definovanie getra, setra a deletera sme použili rovnakú metódu s rôznymi definíciami.

Teraz, kedykoľvek použijeme p.name, interne zavolá vhodný getter, setter a deleter, ako to ukazuje vytlačený výstup prítomný vo vnútri metódy.

Zaujímavé články...