Proprietate Python ()

Construcția property () returnează atributul property.

Sintaxa lui property()este:

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

Lectură recomandată: Python @property: Cum se folosește și de ce?

property () Parametri

property()Ia patru parametri opționali:

  • fget (opțional) - Funcție pentru obținerea valorii atributului. Implicit la None.
  • fset (opțional) - Funcție pentru setarea valorii atributului. Implicit la None.
  • fdel (opțional) - Funcție pentru ștergerea valorii atributului. Implicit la None.
  • doc (opțional) - Un șir care conține documentația (docstring) pentru atribut. Implicit la None.

Returnează valoarea din proprietate ()

property() returnează atributul de proprietate de la getter, setter și deleter dat.

  • Dacă nu sunt date argumente, property()returnează un atribut de proprietate de bază care nu conține niciun getter, setter sau deleter.
  • Dacă doc nu este furnizat, property()preia docstring-ul funcției getter.

Exemplul 1: Creați atributul cu getter, setter și 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

Ieșire

 Obținerea numelui Numele este: Adam Setarea numelui pe John Ștergerea numelui 

Aici, _name este folosit ca variabilă privată pentru stocarea numelui Persoanei.

De asemenea, am setat:

  • o metodă getter get_name()pentru a obține numele persoanei,
  • o metodă setter set_name()pentru a seta numele persoanei,
  • o metodă del_name()de ștergere pentru a șterge numele persoanei.

Acum, setăm un nou nume de atribut de proprietate apelând property()metoda.

Așa cum se arată în program, referindu-se la p.nameapeluri interne get_name()ca getter, set_name()ca setter și del_name()ca ștergere prin ieșirea tipărită prezentă în interiorul metodelor.

Exemplul 2: Utilizarea @property decorator

În loc să îl utilizați property(), puteți utiliza decoratorul Python @propertypentru a atribui getter, setter și deleter.

 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

Ieșire

 Obținerea numelui Numele este: Adam Setarea numelui pe John Ștergerea numelui 

Aici, în loc să îl folosim property(), am folosit @propertydecoratorul.

Mai întâi, specificăm că name()metoda este și un atribut al Persoanei. Acest lucru se face folosind @propertyînainte de metoda getter așa cum se arată în program.

Apoi, folosim numele atributului pentru a specifica setatorul și ștergerea.

Acest lucru se face folosind @name.setterpentru metoda setter și @name.deleterpentru metoda deleter.

Observați, am folosit aceeași metodă name()cu definiții diferite pentru definirea getterului, setterului și deleterului.

Acum, ori de câte ori îl folosim p.name, apelează intern getter-ul, setter-ul și ștergerea corespunzătoare, așa cum se arată în ieșirea tipărită prezentă în interiorul metodei.

Articole interesante...