class Hus: def __init__(self, farge): self._farge = farge self._eier = None self.neste = None # Ny instansvariabel def sett_eier(self, hvem): self._eier = hvem def mal(self, farge): self._farge = farge def hent_farge(self): return self._farge class Person: def __init__(self, navn): self._navn = navn def hent_navn(self): return self._navn husregister = None ola = Person("Ola") olas_hus = Hus("blå") olas_hus.sett_eier(ola) husregister = olas_hus # 1. hus ola = kari = olas_hus = karis_hus = None # opprydding PythonTutor kari = Person("Kari") karis_hus = Hus("rød") karis_hus.sett_eier(kari) karis_hus.neste = husregister husregister = karis_hus # Nytt 1. hus ola = kari = olas_hus = karis_hus = None # opprydding # Mer generelt kan vi bruke # de samme hjelpevariablene: navn = "Ita" person = Person(navn) farge = "gul" nytt_hus = Hus(farge) nytt_hus.sett_eier(person) nytt_hus.neste = husregister husregister = nytt_hus person = nytt_hus = None # opprydding PythonTutor # lager en funksjon som oppretter hus og person og returnerer husobjekt med referanse til eieren def nytt_hus_med_eier(eiernavn, husfarge): # eiernavn er navn på huseier/person (str) # husfarge er fargen til det nye huset (str) # oppretter et nytt personobjekt person = Person(eiernavn) # oppretter et nytt husobjekt og setter personen ovenfor til eier hus = Hus(husfarge) hus.sett_eier(person) return hus nytt_hus = nytt_hus_med_eier("Ulv", "grått") nytt_hus.neste = husregister husregister = nytt_hus # Resten av hovedprogrammet er uforandret fra originalen der husregister var ei ordbok # OPPGAVE: Gjør nødevendige endringer, slik at løkka nedenfor gir riktig utskrift # I forelesningen 18. april vil vi se på hvordan dette kan gjøres for person in husregister: hus = husregister[person] print(person.hent_navn(), "eier et hus med farge", hus.hent_farge()) olas_hus = karis_hus olas_hus.mal("gul") print(karis_hus.hent_farge()) olas_hus = Hus("rød") print(karis_hus.hent_farge()) print(olas_hus) print(karis_hus) for person in husregister: hus = husregister[person] print(person.hent_navn(), "eier et hus med farge", hus.hent_farge(), hus)