Atribuut Python ()

Konstrukt atribuut () tagastab atribuudi atribuut.

Süntaks property()on:

 atribuut (fget = Puudub, fset = Puudub, fdel = Puudub, doc = Puudub)

Soovitatav lugemine: Python @property: Kuidas seda kasutada ja miks?

omadus () Parameetrid

Selleks property()on vaja neli valikulist parameetrit:

  • fget (valikuline) - funktsioon atribuudi väärtuse saamiseks. Vaikimisi None.
  • fset (valikuline) - funktsioon atribuudi väärtuse määramiseks. Vaikimisi None.
  • fdel (valikuline) - funktsioon atribuudi väärtuse kustutamiseks. Vaikimisi None.
  • doc (valikuline) - string, mis sisaldab atribuudi dokumentatsiooni (docstring). Vaikimisi None.

Tagastusväärtus kinnisvaralt ()

property() tagastab atribuudi atribuudi antud getter, setter ja deleter.

  • Kui argumente pole antud, property()tagastab atribuudi base atribuut, mis ei sisalda ühtegi getterit, setterit ega deleterit.
  • Kui dokumenti pole esitatud, property()võtab see funktsiooni getter käsu.

Näide 1: looge atribuut getteri, setteri ja deleteriga

 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äljund

 Nime hankimine Nimi on: Adam Määrab nimeks John Kustutab nime 

Siin kasutatakse nime _name isikliku muutujana isiku nime salvestamiseks.

Samuti määrasime:

  • getter-meetod get_name()isiku nime saamiseks,
  • setter-meetod set_name()isiku nime määramiseks,
  • deleter meetod del_name()isiku nime kustutamiseks.

Nüüd määrasime property()meetodile helistades uue atribuudi atribuudi nime .

Nagu programmis näidatud, p.namekutsub sisemiselt viitamine meetodite sees oleva trükiväljundi kaudu välja get_name()nagu getter, set_name()setter ja del_name()deleter.

Näide 2: @omandi dekoraatori kasutamine

property()Kasutamise asemel saate Pythoni dekoraatori @propertyabil määrata tähise, setteri ja deleteri.

 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äljund

 Nime hankimine Nimi on: Adam Määrab nimeks John Kustutab nime 

Siin property()oleme selle asemel kasutanud @propertydekoraatorit.

Esiteks täpsustame, et name()meetod on ka isiku atribuut. Selleks kasutatakse @propertyenne getter-meetodit, nagu programmis näidatud.

Järgmisena kasutame setteri ja deleteri täpsustamiseks atribuudi nime.

Selleks kasutatakse @name.settersetteri meetodit ja @name.deleterdeleter meetodit.

Pange tähele, et me kasutasime name()getteri, setteri ja deleteri määratlemiseks sama meetodit koos erinevate definitsioonidega.

Nüüd, kui me seda kasutame p.name, kutsub see sisemiselt sobivat getteri, setterit ja deleterit, nagu näitab meetodi sees olev trükitud väljund.

Huvitavad Artiklid...