Konstrukcja property () zwraca atrybut property.
Składnia property()to:
właściwość (fget = None, fset = None, fdel = None, doc = None)
Zalecana lektura: Python @property: jak go używać i dlaczego?
property () Parametry
Przyjmuje property()cztery opcjonalne parametry:
- fget (opcjonalne) - Funkcja do pobierania wartości atrybutu. Domyślnie None.
- fset (opcjonalnie) - funkcja służąca do ustawiania wartości atrybutu. Domyślnie None.
- fdel (opcjonalne) - Funkcja do usuwania wartości atrybutu. Domyślnie None.
- doc (opcjonalny) - ciąg zawierający dokumentację (ciąg dokumentów) dla atrybutu. Domyślnie None.
Wartość zwracana z właściwości ()
property() zwraca atrybut property z podanej metody pobierającej, ustawiającej i usuwającej.
- Jeśli nie podano żadnych argumentów, property()zwraca podstawowy atrybut właściwości, który nie zawiera żadnych funkcji pobierających, ustawiających ani usuwających.
- Jeśli doc nie jest podany, property()pobiera dokumentację funkcji pobierającej.
Przykład 1: Tworzenie atrybutu za pomocą metody pobierającej, ustawiającej i usuwającej
 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
Wynik
Pobieranie imienia Nazywam się: Adam Nadaję imię Jankowi Usuwanie imienia
Tutaj _name jest używana jako zmienna prywatna do przechowywania nazwiska osoby.
Ustawiliśmy również:
- metoda get_name()pobierania imienia i nazwiska osoby,
- metoda setera set_name()do ustawienia imienia osoby,
- metoda del_name()usuwania nazwiska osoby.
Teraz ustawiamy nową nazwę atrybutu właściwości, wywołując property()metodę.
Jak pokazano w programie, odwoływanie się do p.namewewnętrznych wywołań get_name()jako getter, set_name()setter i del_name()deleter poprzez wydrukowane wyjście obecne w metodach.
Przykład 2: Korzystanie z dekoratora @property
Zamiast property()używać dekoratora Pythona, możesz @propertyprzypisać metody pobierające, ustawiające i usuwające.
 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
Wynik
Pobieranie imienia Nazywam się: Adam Nadaję imię Jankowi Usuwanie imienia
Tutaj, zamiast używać property(), użyliśmy @propertydekoratora.
Najpierw określamy, że name()metoda jest również atrybutem osoby. Odbywa się to za pomocą @propertymetody pobierającej przed, jak pokazano w programie.
Następnie używamy nazwy atrybutu do określenia metody ustawiającej i usuwającej.
Odbywa się to za pomocą @name.settermetody ustawiającej i @name.deletermetody deleter.
Zauważ, że użyliśmy tej samej metody name()z różnymi definicjami do definiowania metody pobierającej, ustawiającej i usuwającej.
Teraz, za każdym razem, gdy używamy p.name, wewnętrznie wywołuje odpowiedni getter, setter i deleter, jak pokazano na wydrukowanym wyjściu obecnym wewnątrz metody.








