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 vil nå inneholde en referanse til ett husobjekt. # Husobjektene har fått en ny instansvariabel (self.neste) som kan peke til et annet hus # slik kan husene kjedes sammen; dette kaller vi ei lenkeliste 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 for 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 # 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)