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.

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.

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.

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.

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.

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.