class Bok: def __init__(self, tittel, forfatter, sjanger, sider, aar): self._tittel = tittel self._forfatter = forfatter self._sjanger = sjanger self._sider = sider self._aar = aar #siden vi vet at self._lest altid er false ved opprettelsen av objektet #kan vi skrive false direkte i steden for ? ta det inn som parameter self._lest = False def hent_forfatter_tittel(self): return "Tittel: " + self._tittel + " og forfatter: " + self._forfatter def har_lest(self): self._lest = True def hent_sider(self): return self._sider def lese_tid(self, opm): if self._lest == False: return "ikke lest" else: ord_side = 350 bok_ord = ord_side*self._sider tid = bok_ord/opm return tid def sjekk_sjanger(self, leser_sjangere): for sjanger in leser_sjangere: if self._sjanger == sjanger: return True return False def aar_forskjell(self): naa = 2024 forskjell = naa - self._aar return forskjell #ny til uke 14 def __str__(self): """denne metoden er en magisk metode. Vi skal ikke direkte kalle denne p? objektet. Metoden redefinerer hva vi f?r hvis vi pr?ver ? printe objektet v?rt slik at vi kan f? en pen utskrift. Se hovedprogrammet for eksempel""" #om du skal ha en string over flere linjer husk backslash nyString = "Boken " + self._tittel + "publisert i " + self._aar + \ " av forfatter: " + self._forfatter + " har " + self._sider + " sider" return nyString def __eq__(self, annetObjekt): """denne metoden er ogs? en magisk metode. Vi skal ikke direkte kalle denne p? objektet. Metoden redefinerer hvordan == brukt p? to objekter av denne klassen vil se likhet. Vi definerer selv hva to "like" objekter skal v?re. Se hovedprogrammet for eksempel""" return (self._forfatter == annetObjekt._forfatter and self._tittel == annetObjekt._tittel)