Orjanp Skrevet 1. mars 2007 Del Skrevet 1. mars 2007 (endret) Gitt at jeg har: override.py class overr: def prnt(self): print "This is the original." test_override.py from override import overr def new_prnt(): print 'This is the override' overr.prnt() overr.prnt() = new_prnt overr.prnt() Får følgende feilmelding. [orjanp@ArchThinkpad python]$ python test_override.py File "test_override.py", line 7 overr.prnt() = new_prnt SyntaxError: can't assign to function call Er det mulig å override en fuksjon i en klasse? Har kun sett eksempel på; funksjon = ny_funksjon, ikke klasse.funksjon = ny_funksjon. Eller er det bare jeg som gjør dette helt feil? Tips. Ørjan... Endret 3. mars 2007 av Orjanp Lenke til kommentar
Zolo Skrevet 1. mars 2007 Del Skrevet 1. mars 2007 Har såvidt blad i en tutorial om phyton, men det du spør om skal gå bra. Berre å la klassen override arve klassen overr. Lenke til kommentar
FraXinuS Skrevet 1. mars 2007 Del Skrevet 1. mars 2007 (endret) Du kan gjøre slik som Zolo sier: class NewOverr(overr): ....def prnt(self): ........print 'This is the override' (får ikke til å funke) eller slik: o = overr()o.prnt = new_prnt Endret 1. mars 2007 av FraXinuS Lenke til kommentar
Orjanp Skrevet 3. mars 2007 Forfatter Del Skrevet 3. mars 2007 Takk. overr.prnt = new_prnt Den fungerte. Var ikke langt unna løsningen selv. class new_overr(overr): .... .... Fant ikke ut hva jeg skille gjøre for at denne skulle fungere. Ørjan... Lenke til kommentar
FraXinuS Skrevet 3. mars 2007 Del Skrevet 3. mars 2007 class Test1(object): a = "Hallo" class Test2(Test1): pass class Test3(Test1): a = "Hallo fra 3" t = Test2() print t.a # dette printer "Hallo" fordi Test2 arvet a fra Test1 t = Test3() print t.a # Dette printer "Hallo fra 3" fordi Test3 overrider a Dette funker også med metoder. Så hvis du har en klasse du vil endre litt på så lager du bare en ny klasse og setter navnet på den klassen du vil endre mellom parantesene etter klasse navnet og gjør endringene du vil gjøre. Etterpå kan du bruke din nye klasse akkurat som den gamle. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå