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