Du tror arv kopierer koden inn i subklassen

Handler om: Arv (er-en)

Det kan virke som om arv lager en kopi av forelderens kode i subklassen. Men subklassen «låner» forelderens metoder ved kjøring: endrer du forelderen, endres oppførselen til alle subklassene samtidig.

Eksempel

Du tror at å endre Sprite.flytt() ikke påvirker Ball, fordi Ball «har sin egen kopi».

Slik tenker du riktig om det

Se etter om subklassen faktisk har metoden selv. Har den ikke det, slår Python opp i forelderen ved kjøring — én kilde, ikke en kopi.

Slik ser det ut i kode

Slik gikk det galt

class Ball(Sprite):
    def tegn(self): ...   # bare tegn() er ny
# du tror Ball har sin EGEN kopi av flytt()

Slik fikser du det

# Ball har INGEN egen flytt() -> slår opp i Sprite
ball.flytt()   # endrer du Sprite.flytt(), endres dette også

Les om dette i boka

↓↑ naviger Enter åpne ShiftEnter ny fane Esc lukk
Velg tema
Skala