Gå til innhold

Anbefalte innlegg

fil1
______
 
class Gave:
    def __init__(self,gaven_navn,koster):
        self._gave_navn = gaven_navn
        self._koster = koster
 
    def returner_gave_navn(self):
        return self._gave_navn
 
    def returner_koster(self):
        return self._koster
 
    def __str__(self):
        return self._gave_navn + "" + str(self._koster)
 
 
fil2
_______
 
from gave import Gave
 
class Barn:
    def __init__(self,navn):
        self._navn = navn
        self._gaver = []
        self._total_verdi = 0
 
    def returner_barn_navn(self):
        return self._navn
 
    def returner_total_verdi(self):
        return self._total_verdi
 
    def aapne_gave(self,gave):
        self._gaver.append(gave)
        self._total_verdi = self._total_verdi + gave.returner_koster()  <-------- Lurer på dette.
 
    def skriv_barn(self):
        print(self._navn)
        for gave in self._gaver:
            print(gave)
        print("Total verdi: " + self._total_verdi)
 
Lurer her på hva gave.returner_koster() gjør? Er det slik at den legger til verdien som kommer fra bruker inputen fra fil1 til instansvariabelen self._total_verdi i fil2? I tillegg lurer jeg på hvorfor man har "gave." før man kaller "returner_koster()" . Vet at gave er bruker inputen på funksjonen aapne_gave(self,gave) men vet ikke hvorfor man har den der og hva den gjør. Er ganske takknemlig for hjelp og takker for svar på forhånd :) 

 

Lenke til kommentar
Videoannonse
Annonse
  • 2 uker senere...

Dette er objektorientert programmering. Når du sender et Barn en Gave så må du, for å finne ut _total_verdi, legge til verien av gaven.

For å hente ut verdien til gaven må du bruke metoden returner_koster() som igjen returnerer verdien som ellers er 'hemmelig'. 

 

Når du ser kode som ligner på enGjenstand.etMetodeKall() så er det syntaksen for å få objektet enGjenstand, som gjerne er av klassen (typen) Gjenstand om å utføre koden som er i etMetodeKall.

 

Den viktigste filen ser ikke vi, som er filen som faktisk inneholder et program.

Grunnen til at klassene er delt inn i filer her, er slik at f.eks alle som vil kunne motta eller gi Gaver kan from gave import Gave.

Lenke til kommentar

Hei, klassen du har for gave kan du tenke på som en modell for gavene du skal ha.
 

Når du da lurer på følgende:
self._total_verdi = self._total_verdi + gave.returner_koster()

Det man der i praksis gjør er å legge til returnert verdi fra klassen gave, for gaven du legger til i matrisen.
Denne verdien er da inni klassen barn i form av den variabelen self.
_total_verdi , men den hentes ut fra instansen du har av klassen gave, gjennom funksjonen for å returnere verdi.

Siden du der plusser på en verdi i en eksisterende verdi, kunne du også brukt += fremfor å gjenta variabelnavnet:

self._total_verdi = self._total_verdi + gave.returner_koster()

Er det samme som:

self._total_verdi += gave.returner_koster()

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...