Python Forum

Full Version: classes , error at line 88 name finnKategori not defined
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
class Bud:
    def __init__(self, budgiver, budStr):
        self._budgiver = budgiver
        self._budStr = budStr
        if budStr < 0:
            self._budStr = 1
    def hentBudgiver(self):
        return self._budgiver
    def hentBudStr(self):
        return self._budStr

class Annonse:
    def __init__(self, annTekst):
        self._annTekst=annTekst   
        self._budListe=[]
        
    def hentTekst(self): #returnerer annonse tekst
        return self._annTekst
    
    def giBud(self, hvem, belop): #oppretter og legger til nytt bud 
    #i en liste over bud
        nuttBud=Bud(hvem, belop)
        self._budliste.append(nyttBud)
    
    def antBud(self): #returnerer antall bud
        return len(self._budListe)
    
    def hoyesteBud(self): #returnerer høyeste bud
    #dersom like bud, det som kom først
        hoyeste=None
        hoyesteVerdi=0
        for bud in self._budListe:
            if bud.hentBudStr()>hoyesteVerdi:
                hoyeste=bud
                hoyesteVerdi=bud.hentBudStr()
        return hoyeste
        
    def kraftBud(self, hvem, belop, max):
        budBelop=belop
        hoyeste=self._hoyesteBud()._hentBudStr()
        if belop<hoyeste:
            budbelop=hoyeste+1
        if budBelop>max:
            budbelop=max
        self._giBud(hvem, budBelop)

    #i klassen Annonse:
    def tellLaveBud(self):
        hoyeste_hitill=0        
        antall_lavere=0
        for bud in self._budListe:
            if bud.hentBudStr()>hoyeste_hitill:
                hoyeste_hitill=bud.hentBudStr()
            else:
                antall_lavere +=1
        return antall_lavere
    
class Kategori:
    def __init__(self, katNavn):
        self._katNavn=katNavn
        self._annonseliste=[]

    def nyAnnonse(self, annTekst):
        nyAnn=Annonse(annTekst)
        self._annonseliste.append(nyAnn)        
 
    def hentAnnonser(self):
        return self._annonseliste
    
    #i klassen kategori:
    def tellLaveBud(self):
        antall=0
        for annonse in self._annonseListe():
            antall +=ann.tellLaveBud()
        return antall
        
class BruktMarked:
    def __init__(self): 
        self._kategorier={}
            
    def finnKategori(self, katNavn): 
        for kat in self._kategorier:
            if kat==katNavn:
                return self._kategorier[kat]
        return None
        
    def nyKategori(self, katNavn): 
        if finnKategori(katNavn) == None:[error]finnKategori not defined[/error]
            nyKat=Kategori[katNavn]
            self._kategorier[katNavn]=nyKat
            return nyKat    
        else:
            return None
            
    #i klassen bruktmarked
    def tellLaveBud(self):
        antall=0
        for kat in self._kategorier:
            antall +=self._kategorier[kat].tellLaveBud()
        return antall
        
def main():
    marked=BruktMarked()
    kat=marked.nyKategori("sykkellykt")
    ann=kat.nyAnnonse("New Yorker sykkellykt")
    ann.giBud("Peter",42)
    ann.giBud("Ann", 0)
    ann.kraftBud("Mary",40,50)
    hoyesteBudStr=ann.hoyesteBud().hentBudStr()
    budGiver=ann.hoyesteBud().hentBudgiver()
    print(hoyesteBudStr, "gitt av" , budGiver)
main()        
Use self.finnKategori() to refer to object's own method.
And next time please post full error traceback message in error tags along with code.
(Nov-12-2018, 08:06 PM)j.crater Wrote: [ -> ]Use self.finnKategori() to refer to object's own method.
And next time please post full error traceback message in error tags along with code.
thank you, there are some other errors in this code:
line 104 "TypeError: 'type' object is not subscriptable"
(Nov-12-2018, 08:06 PM)j.crater Wrote: [ -> ]And next time please post full error traceback message in error tags