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.