Uke 9

Denne uken er planen ? jobbe litt mer med OO (Objektorientert programmering), komplekse datastrukturer og litt repetisjon.

Klikk her for ? se oppgavene for denne uken.

Her er l?sningsforslag for oppgave 3: 

Blomst , Blomsterkasse og en liten testfil

Litt repetisjon

Konstrukt?ren i v?r klasse er __init__ metoden, her kan vi sette verdier, opprette instansvariabler og gj?re det som skal gj?res n?r ett objekt opprettes. Om vi har en __init__ som ser ut som:

 

 

 

Tar vi inn tall og tekst som parametere til __init__ metoden. Dette er verdier som blir sendt med n?r vi oppretter en instans av ett objekt. Her blir henholdsvis instansvariabelen _tallverdi  satt til det tall er, og _tekstVerdi blir satt til ? v?re verdien tekst er.

Hvis man f.eks. skal ha en instansvariabel som alltid starter p? 0, trenger ikke denne ? v?re med som parameter til konstrukt?ren.

def __init__(self, tall, tekst):
    self._tallVerdi = tall
    self._tekstVerdi = tekst
    self._startVerdi = 0

Og husk navnet p? en parameter har ikke noen sammenheng med variabelnavnet i objektet.

Hvorfor har vi __init__, og ikke bare sett-metoder?

Dette har med at vi ?nsker ? kreve at alle instanser av en type objekt har visse attributter. F.eks. n?r vi lager "bil" s? skal det sendes inn et registreringsnummer.

Hvorfor skal vi bruke return (og ikke bare printe)? 

  • Det er ikke alt man ?nsker ? skrive ut p? skjermen! 
  • Ved print s? f?r man ikke tak i verdien (til ? bruke til andre ting senere)!

Return og print har ikke noe med hverandre ? gj?re heller. De er helt forskjellige ting. Dersom  man f?r en beskjed om "lag en funksjon/metode som bla bla bla... og returnerer svaret". Da skal man bruke return!

Magiske metoder

Python har en rekke "magiske" metoder, her er en liten forklaring p? to av de dere allerede har m?tt p?

Metode Forklaring
__init__

Konstrukt?ren til objektet v?rt, kalles n?r en ny instans av objektet opprettes.

kari = Person("Kari") # n? kalles init-metoden
__str__ "Gj?r om noe til tekst", kalles n?r vi ?nsker ? f? en tekstrepresentasjon av et objekt. 
tekst = str(kari) # n? settes tekst til ? v?re det __str__ returnerer
print(kari) # skriver ut det __str__ returnerer

For mer informasjon om flere magiske metoder se foilene eller python-dokumentasjonen (her st?r det om mye mer, s? fort gjort ? bli forvirret).

PS:

Liten forbokstav p? variabelnavn og filnavn, stor forbokstav p? klassenavn.

Publisert 14. okt. 2020 20:28 - Sist endret 19. okt. 2020 21:42