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.








