Gå til innhold

[løst]Override funksjon i klasse


Anbefalte innlegg

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 av Orjanp
Lenke til kommentar
Videoannonse
Annonse

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 av FraXinuS
Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...