I et objektorientert språk er en klasse et utvidbart stykke kode som representerer en mal for å lage og bruke objektene til den klassen. Et objekt i en klasse refererer ganske enkelt til en forekomst av den definerte klassen.
Grunnleggende om Python Class
I Python-programmeringsspråket er hvert stykke data representert som en forekomst av noen klasse. Hvis du ikke er kjent med språket, kan du se vår nybegynnerveiledning til Python før du går videre.
En klasse gir et sett med atferd i form av medlemsfunksjoner (også kjent som metoder), som har implementeringer som er felles for alle forekomster av den klassen, og den bestemmer også måten staten informasjon for sin forekomst er representert i form av attributter.
Les mer: Klassemetoder i Python: De viktige forskjellene
Koden nedenfor representerer et eksempel på en definert klasse i Python. Klassen definert i koden gir en implementering av en RaceCar-klasse.
Hver forekomst av klassen gir en enkel modell for forskjellige bilmerker, og den inneholder følgende tilstand informasjon: navn på bilen, førerens navn, bilens nummerplate, nåværende hastighet, hastighetsavgift og farge.
Denne bilklassen modellerer en spesiell sensor i hver bil som logger en bot på $ 50 mot føreren av bilen hvis han eller hun overskrider den lovlige fartsgrensen på 140 miles i timen.
Eksempel på klasse (bilklasse)
klasse bil:
#Konstruktør
# init-metoden er ansvarlig for å initialisere verdiene til forekomsten #variables i klassen.
def __init __ (self, car_name, driver_name, license_plate_number,
gjeldende hastighet, hastighetsavgift, farge):
self.car_name = bilnavn
self._driver_name = driver_name
self._license_plate_number = licens_plate_number
self._current_speed = nåværende_hastighet
self._speeding_charge = speed_charge
selv._farge = farge
#Accessor metoder
# Metoden get_car_name returnerer navnet på bilen
def get_car_name (selv):
returner selv._bil_navn
# Get_driver_name-metoden returnerer navnet på driveren
def get_driver_name (selv):
returner selv._driver_navn
# Get_license_plate-metoden returnerer bilskiltet
def get_license_plate (selv):
returner selv._lisens_plate
# Get_current_speed-metoden returnerer gjeldende hastighet som bilen kjører på
def get_current_speed (selv):
returner selv._strøm_hastighet
# Get_speeding_charge-metoden returnerer den totale mengden penger som
#driver må betale for høy hastighet
def get_speeding_charge (selv):
returner selv._hastighetsavgift
# Get_colour-metoden returnerer fargen på den søte turen vår!
def get_colour (selv):
returner selv._farge
#Mutator-metoder
# Set_driver-verdien endrer sjåføren til bilen vår.
def set_driver (selv, ny_driver):
self._driver_name = new_driver
# Metoden for hurtigkjøring sørger for at sjåføren belastes med 50 dollar når # han eller hun fanget fart over 140 miles i timen :(
def speeding_ticket (selv, nåværende_hastighet):
hvis gjeldende_hastighet <= 140:
returner Falsk
ellers:
selv._hastighetsavgift + = 50
returner True
# Make_payment-metoden sørger for at sjåføren er i stand til å betale for alle #beløpet som han eller hun skylder for hastige billettgebyrer.
def make_payment (selv, beløp_betalt):
self._speeding_charge - = beløp_betalt
En forklaring på Python Class-eksemplet
"Selv" -parameteren
Merk deg for det første at det er en forskjell mellom metodesignaturen deklarert i klassen og metodesignaturen som brukes av programmereren for å ringe til funksjonen. For eksempel få_farge metoden som definert i klassen tar en parameter som er 'selv' parameteren.
Men når programmereren kaller denne metoden på en forekomst av klassen, gir han ingen parametere. Det samme fenomenet kan observeres i metoden speeding_ticket som er definert til å ta to parametere i klassen (dvs. selv og nåværende hastighet), men programmereren er i stand til å utføre denne metoden ved å oppgi verdien for bare 'nåværende hastighet' parameter.
Dette er fordi formålet med den 'selv' parameteren som er gitt, er å binde metoden til objektforekomsten som den ble kalt til, og det er ikke en verdi som skal gis av programmereren.
Konstruktøren
En konstruktør av en klasse refererer til metoden til klassen som en bruker kan ringe for å opprette en objektforekomst av den klassen. I klassen Bil kan brukeren opprette en objektforekomst ved å bruke følgende syntaks:
# skape vår helt egen Bugatti :)
Bil (“Bugatti”, “David Sasu”, 90828, 0, 0, “Cherry Red”)
Utførelsen av denne koden resulterer i et anrop til __init__-metoden i bilklassen. Ansvaret for denne metoden er å generere et nyopprettet kredittbilobjekt med de angitte forekomstverdiene. Hvert objekt i bilklassen består av seks instansvariabler som er:
- _bilnavn
- _drivernavn
- _bilskilt
- _nåværende hastighet
- _hastighetsavgift
- _farge
Tilbehørsmetoder
Dette er metoder som er skrevet for å få tilgang til tilstandsinformasjonen til en objektforekomst. I bilklassen er tilgangsmetodene som ble skrevet:
- get_car_name
- get_driver_name
- get_license_plate
- get_current_speed
- få_hastighetsavgift
- få_farge
Mutatormetoder:
Dette er metoder som er skrevet for å endre tilstandsinformasjonen til en objektforekomst. I bilklassen er mutasjonsmetodene som ble skrevet:
- set_driver
- fartsbot
- utføre betaling
Konseptet med innkapsling
‘Encapsulation’ er et begrep som brukes til å beskrive et prinsipp for objektorientert design der komponenter i et program ikke skal avsløre de interne detaljene i deres respektive implementeringer. For å øke din forståelse av begrepet innkapsling, se vår artikkel om innkapsling.
Feil under kontroll
Implementeringen av bilklassen er ikke robust siden den sannsynligvis vil krasje eller fungere, avhengig av inngangen den mottar fra programmereren.
Vær først oppmerksom på at vi ikke sjekker typene av parametrene til speed_ticket og make_payment-metodene, og vi sjekker heller ikke typene til noen av parametrene til konstruktøren. Dette kan føre til at programmet krasjer hvis brukeren gir et argument som ikke var forventet. For eksempel, hvis brukeren ringer som speed_ticket ("chips ahoy"), vil programmet krasje fordi typen metoden forventet var et heltall og ikke en streng.
Nå forstår du Python Class Basics
I denne artikkelen har du blitt introdusert for konseptet med en Python-klasse og et Python-klasseobjekt. Du har også blitt introdusert for ideene som en python-klasse bygger på, for eksempel: innkapsling, "selv" -identifikatoren, tilgangsmetoder og mutatormetoder.
Med denne informasjonen, bør du kunne lage en enkel Python-klasse på egen hånd og teste den :)
Nå må du bekrefte identiteten din via mobilenheten din for å koble kontoen din på skrivebordet og webappen.
- Programmering
- Python
Abonner på vårt nyhetsbrev
Bli med på nyhetsbrevet vårt for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!
Ett steg til…!
Bekreft e-postadressen din i e-posten vi nettopp sendte deg.