Du tror polymorfi krever en felles superklasse
Handler om: Polymorfi, Arv (er-en)
Polymorfi i Python handler om at objektene *svarer på det samme kallet*, ikke om hvor de stammer fra. Har både `Spiller` og `Fiende` en `tegn(skjerm)`, kan samme løkke tegne begge — uten at de arver fra noe felles. Python spør ikke etter stamtavlen, bare om metoden finnes (duck-typing).
Eksempel
Du lager en tom superklasse bare for å få en for-løkke til å kalle `flytt()` på alt i lista, selv om alle klassene allerede har metoden.
Slik tenker du riktig om det
Arv sier «er en»; polymorfi spør bare «kan du dette?». Sjekk om koden bruker superklassen til noe annet enn å binde klassene sammen — gjør den ikke det, trengs den ikke.
Slik ser det ut i kode
Slik gikk det galt
class Figur: # tom, bare for å binde dem sammen
pass
class Spiller(Figur):
def tegn(self, skjerm): ... Slik fikser du det
class Spiller:
def tegn(self, skjerm): ...
class Fiende:
def tegn(self, skjerm): ...
for f in figurer: # virker: begge HAR tegn()
f.tegn(skjerm)