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.