Objekorienteritud programmeerimise valdkonnas on olemas mitmeid väljakujunenud kontseptsioone, mis aitavad hallata objektide atribuutide juurdepääsu. Üks nendest kesksetest aspektidest on Getter ja Setter. Siiski ei rakendata seda kontsepti Pythonis samamoodi nagu teistes objekti-orienteeritud keeltes. Selles juhendis õpid, kuidas kasutada Getter'it ja Setter'it Pythonis tõhusamalt, et hallata oma klasside atribuutide juurdepääsu.

Peamised järeldused

  • Getter'id ja Setter'id on meetodid, mis kontrollivad juurdepääsu atribuutidele.
  • Pythonis on elegantne viis Getter'ite ja Setter'ite rakendamiseks @property-dekoratori abil.
  • Kohandatud nimetegevuste kasutamine aitab selgelt eristada sisemisi ja avalikke atribuute.
  • Pythonis on juurdepääsude modifikaatorite konventsioon erinev teistest keeltest.

Samm-sammuline juhend

Samm 1: Loo klass atribuutidega

Alusta lihtsa klassi määratlemisega. Oletame, et soovid luua klassi Person, millel on nimi atribuudiks. Nimi salvestatakse initsialiseerijas privaatse atribuudina.

EFektiivne getters ja setters kasutamine Pythons

Siin deklareeritakse _name kui sisemine atribuut, kusjuures allkriipsu eesliide näitab, et tegemist on privaatse muutujaga.

Samm 2: Lisa Getter

Et saada juurdepääs sisemisele atributile name, lisa Getter meetod. See meetod tagastab nime praeguse väärtuse.

EFEKTIIVNE kasutamine Getterite ja Setterite puhul Pythoni keeles

Samm 3: Lisa Setter

Nüüd lisame Setter meetodi, et isiku nime saaks muuta. Setter võimaldab sul määrata uusi väärtusi sisemisele atribuudile.

EFFEKTIVNE kasutamine Getterite ja Setterite Pythonis

Samm 4: Kasuta @property

Pythonis on atribuutidega tegelemine veelgi eleganter, kui kasutad @property-dekoratorit. See võimaldab sul defineerida Getter'eid ja Setter'eid otse klassis, ilma et peaksid looma eraldi meetodeid.

EFektiivne Getterite ja Setterite kasutamine Pythoni keeles

Samm 5: Tegemisel mitteavalike atribuutidega

Et tagada, et sisemine atribuut pole otse väljast juurdepääsetav, võid kasutada eesliidet __, et seda atribuudile veelgi enam kapseldada. See lähenemine tagab, et juurdepääs toimub ainult Getter'ite ja Setter'ite meetodite kaudu.

TÕHUS kasutamine Getterite ja Setterite Pythonis

Selle rakendusega tagatakse, et __name'ile ei saa väljast juurdepääsu.

Kokkuvõte – Getter'id ja Setter'id Pythonis

Selles juhendis oled saanud teada, kuidas rakendada Getter'it ja Setter'it Pythonis tõhusalt, et hallata objekti muutujate juurdepääsu. Samuti oled õppinud @property kasutamist, mis muudab koodi selgemaks ja idioomsemaks. Atribuutide kapseldamisega kahekordse allkriipsuga saad tagada, et sisemised muutujad on kaitstud volitamata juurdepääsu eest.

Korduma kippuvad küsimused

Mis on Getter'id ja Setter'id Pythonis?Getter'id ja Setter'id on meetodid, mis juhivad ja võimaldavad juurdepääsu klassi atribuutidele.

Kuidas rakendada Getter'eid ja Setter'eid Pythonis?Sa saad rakendada Getter'eid ja Setter'eid meetodite või @property-dekoratori abil.

Mis on @property eelised?@property-dekorator võimaldab elegantset ja intuitiivset juurdepääsu atribuutidele, ilma et peaksid rakendama eraldi meetodeid.

miks ei tohiks Pythoni atribuudid olla otse juurdepääsetavad?Otse juurdepääs võib põhjustada ootamatuid käitumisi ja kahjustada objektiandmete terviklikkust, seega on parem juurdepääsu kontrollida.

Mis tähendab atribuutide tähistamine "privaatseks"?Privaatne atribuut tähistatakse, kui sellele eelneb allkriips (_) või kahekordne allkriips (__), et näidata, et see ei tohiks olla otse juurdepääsetav.