Vlastnost Pythonu ()

Konstrukce property () vrací atribut vlastnosti.

Syntaxe property()je:

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

Doporučená literatura: Python @property: Jak ji používat a proč?

vlastnost () parametry

property()Trvá čtyři volitelné parametry:

  • fget (volitelné) - Funkce pro získání hodnoty atributu. Výchozí nastavení pro None.
  • fset (volitelné) - Funkce pro nastavení hodnoty atributu. Výchozí nastavení pro None.
  • fdel (volitelně) - funkce pro odstranění hodnoty atributu. Výchozí nastavení pro None.
  • doc (volitelně) - Řetězec, který obsahuje dokumentaci (docstring) k atributu. Výchozí nastavení pro None.

Vrátit hodnotu z vlastnosti ()

property() vrací atribut vlastnosti z daného getru, setteru a deleteru.

  • Pokud nejsou zadány žádné argumenty, property()vrátí atribut základní vlastnosti, který neobsahuje žádný getter, setter ani deleter.
  • Pokud není k dispozici doc , property()převezme docstring funkce getter.

Příklad 1: Vytvořte atribut pomocí metody 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ýstup

 Získání jména Jméno je: Adam Nastavení jména na John Mazání jména 

Zde se _name používá jako soukromá proměnná pro ukládání jména osoby.

Také jsme nastavili:

  • metoda getru get_name()pro získání jména osoby,
  • metoda setter set_name()pro nastavení jména osoby,
  • metodu deleter del_name()k odstranění jména osoby.

Nyní jsme voláním property()metody nastavili nový název atributu vlastnosti .

Jak je znázorněno v programu, p.nameinterní odkazování volá get_name()jako getter, set_name()jako setter a del_name()jako deleter prostřednictvím tištěného výstupu přítomného uvnitř metod.

Příklad 2: Použití dekorátoru @ vlastnictví

Místo použití property()můžete použít dekorátor Pythonu @propertyk přiřazení getru, setteru a deleteru.

 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ýstup

 Získání jména Jméno je: Adam Nastavení jména na John Mazání jména 

Zde jsme místo použití property()použili @propertydekoratér.

Nejprve zadáme, že name()metoda je také atributem Person. To se provádí pomocí @propertymetody před getrem, jak je uvedeno v programu.

Dále použijeme název atributu k určení setteru a deleteru.

To se provádí pomocí @name.settermetody setter a @name.deletermetody deleter.

Všimněte si, že jsme použili stejnou metodu name()s různými definicemi pro definování getter, setter a deleter.

Nyní, kdykoli použijeme p.name, interně volá příslušný getter, setter a deleter, jak ukazuje tištěný výstup přítomný uvnitř metody.

Zajímavé články...