I objektorientert programmering ( OOP ) språk som Python , klasser og objekter er en integrert del av hvordan data er representert . En av de grunnleggende prinsippene for OOP er data integritet og datasikkerhet . Dette er svært viktig for et språk som Python som finnes i et stort utvalg av programvare og på nettet . En måte å opprettholde dataintegritet er å kontrollere hvordan objektet data samhandler med brukerne . Den "eiendom ( ) "-funksjonen i Python gjør nettopp det . Klasser og objekter i Python
Fordi Python er et objekt - orientert språk , kan Python programmerere lage spesielle typer datatyper ved å skape "klasser ". Klassene er skissene som definerer den interne strukturen og oppførselen til et objekt. Etter å ha skrevet en klasse , kan en programmerer " instantiate " (eller opprette en forekomst av ) et objekt . Følgende eksempel viser en grunnleggende klasse og en instans av et objekt av klassen
>>> klassen Basic: . //Class navn
. . . def __ init__ (egen ) : //initialiserer funksjon kalt implisitt når objektet er instansiert
. . . self.x = 4 //local data medlem
. . . def skrive ( ) : //medlem metoden
. . . print " Hello"
>>> f = Basic ( ) //f representerer nå en " Basic" objekt
Beskytte data
< p > Enhver gjenstand laget fra " Basic "-klassen vil inneholde et dataelement "x " som skal inneholde heltall fire . En programmerer jobber med en grunnleggende objekt kan få tilgang til data i x med " . " operatør , som i dette eksemplet : en
>>> fx
4
Imidlertid kan brukeren endre denne verdien når som helst , akkurat som med alle andre variabel. Dette er kanskje ikke ønskelig i alle tilfeller , en klasse kan inneholde viktige data som brukerne ikke skal endres . I dette tilfellet , data medlemmer i Python har en Navnekonvensjonen å sette to understrek tegn før medlemmet navn for å forhindre en bruker fra å endre det : en
>>> klassen Basic:
< p> . . . def __ init__ (egen )
. . . self.__x = 4 //private data medlem
Getters og settere
Dette skjuling av data fra innsyn er ofte beskrevet som " innkapsling ". Data skjult for brukeren tilgang kan kreve sporadisk manipulasjon , som i tilfeller der en bruker kan endre klasse informasjon , men bare innenfor visse rammer . I dette tilfellet omfatter den programmerer " Gan " og " settere ", som returnere verdien og sette verdien , henholdsvis. Getters bare returnere en verdi og settere endre verdien samtidig opprettholde dataenes integritet. Følgende eksempel viser utvalget får og sette funksjoner i et Python -klasse : en
>>> klassen Basic:
. . . def __ init__ ( KSF ) : en
. . . self.__x = 4
. . . def getX (egen ) : en
. . . returnere self.__x
. . . def setX (egen , newx ) : en
. . . hvis newx > = 0 : en
. . . selv. __x = newx
"eiendom ( )" Metode
Noen brukere anser det uhåndterlig for brukerne å ha tilgang til " f.getx ( ) "-metoden for hver eksempel dataene er nødvendig. Den " f.x " syntaks er vanligvis mer praktisk. Den "eiendom "-metoden gjør nettopp dette : det tillater programmereren å definere komme og sette metoder ( sammen med andre) og binde dem til enkel syntaks . Tar Basic klassen som et eksempel , vil "eiendom "-metoden forenkle brukernes tilgang til Grunndata : en
. . . def getx (egen ) : en
. . . returnere self.__x
. . . def setx (egen , newx ) : en
. . . hvis newx > = 0 : en
. . . self.__x = newx
. . . eiendom ( blir, setx ) //nå brukerne kan få __ x verdi med fx , og sett det med fx = i