Python-ominaisuus ()

Ominaisuus () -rakenne palauttaa ominaisuusattribuutin.

Syntaksi property()on:

 ominaisuus (fget = Ei mitään, fset = Ei mitään, fdel = Ei mitään, doc = Ei mitään)

Suositeltavaa lukea : Python @property: Kuinka sitä käytetään ja miksi?

ominaisuus () Parametrit

property()Kestää neljä valinnaiset parametrit:

  • fget (valinnainen) - Toiminto määritteen arvon saamiseksi. Oletusarvo on None.
  • fset (valinnainen) - Toiminto määritteen arvon asettamiseen. Oletusarvo on None.
  • fdel (valinnainen) - Toiminto määritteen arvon poistamiseksi. Oletusarvo on None.
  • doc (valinnainen) - merkkijono, joka sisältää määritteen dokumentaation (docstring). Oletusarvo on None.

Palautusarvo kiinteistöstä ()

property() palauttaa ominaisuusattribuutin annetusta getteristä, setteristä ja deleteristä.

  • Jos argumentteja ei anneta, property()palauttaa perusominaisuusmääritteen, joka ei sisällä mitään getteriä, setteriä tai deleteria.
  • Jos asiakirjaa ei toimiteta, property()vie getter-funktion komentosarjan.

Esimerkki 1: Luo attribuutti getterillä, setterillä ja deleterillä

 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

Tuotos

 Nimen hankkiminen Nimi on: Adam Asettamalla nimen John Poistetaan nimi 

Täällä _nimeä käytetään yksityisenä muuttujana henkilön nimen tallentamiseen.

Asetimme myös:

  • getter-menetelmä get_name()henkilön nimen saamiseksi,
  • setterimenetelmä set_name()henkilön nimen asettamiseksi,
  • deleter-menetelmä del_name()henkilön nimen poistamiseksi.

Nyt asetetaan uusi ominaisuusmääritteen nimi kutsumalla property()menetelmä.

Kuten ohjelmassa on esitetty, p.namesisäisesti viittaaminen kutsuu get_name()getteriksi, set_name()setteriksi ja del_name()deleteriksi menetelmien sisällä olevan painetun tuloksen kautta.

Esimerkki 2: Käyttämällä @ominaisuuskoristetta

Käyttämisen sijaan property()voit käyttää Python-sisustajaa @propertymäärittämään getterin, setterin ja deleterin.

 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

Tuotos

 Nimen hankkiminen Nimi on: Adam Asettamalla nimen John Poistetaan nimi 

Tässä property()olemme käyttäneet @propertykoristelijaa sen sijaan , että käyttäisimme .

Ensinnäkin määritämme, että name()menetelmä on myös Person-attribuutti. Tämä tehdään @propertyennen getter-menetelmää, kuten ohjelmassa on esitetty.

Seuraavaksi käytämme määritteen nimeä määrittelijän ja poistajan määrittämiseksi.

Tämä tehdään käyttämällä @name.settersetterimenetelmää ja @name.deleterdeleter-menetelmää.

Huomaa, että olemme käyttäneet samaa menetelmää name()eri määritelmillä määritettäessä getter, setter ja deleter.

Nyt, kun käytämme p.name, se kutsuu sisäisesti sopivan getterin, setterin ja deleterin, kuten menetelmän sisällä oleva painettu tulos osoittaa.

Mielenkiintoisia artikkeleita...