Svojstvo Python ()

Konstrukcija svojstva () vraća svojstvo svojstva.

Sintaksa property()je:

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

Preporučeno čitanje: Python @property: Kako ga koristiti i zašto?

svojstva () Parametri

property()Traje četiri izborne parametre:

  • fget (nije obavezno) - funkcija za dobivanje vrijednosti atributa. Zadane vrijednosti None.
  • fset (nije obavezno) - funkcija za postavljanje vrijednosti atributa. Zadane vrijednosti None.
  • fdel (nije obavezno) - Funkcija za brisanje vrijednosti atributa. Zadane vrijednosti None.
  • doc (nije obavezno) - niz koji sadrži dokumentaciju (docstring) za atribut. Zadane vrijednosti None.

Povratna vrijednost iz svojstva ()

property() vraća svojstvo svojstva od datog getera, postavljača i brisača.

  • Ako se ne daju argumenti, property()vraća osnovni atribut svojstva koji ne sadrži getter, setter ili deleter.
  • Ako doc nije osiguran, property()uzima docstring funkcije getter.

Primjer 1: Stvorite atribut pomoću getera, postavljača i brisača

 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

Izlaz

 Dobivanje imena Ime je: Adam Postavljanje imena na John Brisanje imena 

Ovdje se _name koristi kao privatna varijabla za pohranu imena Osobe.

Također smo postavili:

  • getterska metoda get_name()za dobivanje imena osobe,
  • metoda set_name()postavljača za postavljanje imena osobe,
  • metoda del_name()brisanja za brisanje imena osobe.

Sada postavljamo novo ime atributa svojstva pozivanjem property()metode.

Kao što je prikazano u programu, pozivanje p.nameinternih poziva get_name()kao getera, set_name()postavljača i del_name()brisača kroz ispisani izlaz prisutan unutar metoda.

Primjer 2: Korištenje @property dekoratera

Umjesto da koristite property(), možete koristiti Python dekorator @propertyza dodjeljivanje getera, postavljača i brisača.

 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

Izlaz

 Dobivanje imena Ime je: Adam Postavljanje imena na John Brisanje imena 

Ovdje smo, umjesto za upotrebu property(), koristili @propertydekorator.

Prvo, preciziramo da je name()metoda također atribut Osobe. To se postiže korištenjem @propertymetode prije dobivanja, kako je prikazano u programu.

Dalje, koristimo ime atributa da odredimo postavljač i brisač.

To se radi pomoću @name.settermetode postavljanja i metode @name.deleterbrisanja.

Obavijest, koristili smo istu metodu name()s različitim definicijama za definiranje getera, postavljača i brisača.

Sada, kad god koristimo p.name, interno poziva odgovarajući getter, setter i deleter, kao što prikazuje ispisani izlaz prisutan unutar metode.

Zanimljivi članci...