Du tror du må sjekke typen for å kalle riktig metode
Handler om: Polymorfi
Det er fristende å skrive en if-kjede som spør «hvilken type er dette?» før du kaller riktig metode. Men med polymorfi kaller du bare den ene metoden, og hvert objekt svarer selv. Da slipper du if-kjeden helt — og ny type krever ingen endring i løkka.
Eksempel
Du skriver if type(s) == Ball: ... elif type(s) == Fiende: ... i stedet for bare s.tegn().
Slik tenker du riktig om det
Stol på at objektet vet hvordan det skal tegne seg selv. Kall samme metode på alle — s.tegn() — og la hver klasse ha sin egen versjon. Legger du til en ny type senere, trenger du ikke røre løkka.
Slik ser det ut i kode
Slik gikk det galt
for s in sprites:
if type(s) == Ball: s.tegn_ball()
elif type(s) == Fiende: s.tegn_fiende() Slik fikser du det
for s in sprites:
s.tegn() # hvert objekt vet selv hvordan