Når man lager klasser er ofte oppdeling i superklasser og underklasser å foretrekke fordi dette gjør logikken klarere.
Et eksempel på en ganske generell klasse:
class Motorsykkel(): def __init__(selv, navn, kubikk, årsmodell, farge, produsent): selv.navn = navn selv.kubikk = kubikk selv.årsmodell = årsmodell selv.farge = farge selv.produsent = produsent def hentBeskrivelse(selv): return selv.navn + " " + str(selv.kubikk) + " " + str(selv.årsmodell) + ", produsert av " + selv.produsent + ", " + selv.farge
Denne klassen gjør ikke så mye enda, det eneste som foregår er oppbevaring av data som også kan hentes ut igjen i form av en beskrivelse.
Eksempel på bruk av klassen over:
motorsykkel = Motorsykkel("GSX F", 600, 1995, "svart og oransje", "Suzuki") motorsykkel.hentBeskrivelse() # gir: # "GSX F 600 1995, produsert av Suzuki, svart og oransje"
Her opprettes et objekt av typen Motorsykkel som gis en rekke data.
Etterpå hentes beskrivelsen.
Eksempel på en underklasse som arver fra klassen øverst, hvor denne dermed blir til en superklasse:
class TohjulsMotorsykkel(Motorsykkel): def __init__(selv, navn, kubikk, årsmodell, farge, produsent, type): super().__init__(navn, kubikk, årsmodell, farge, produsent) selv.type = type def hentBeskrivelse(selv): return super().hentBeskrivelse() + ", type " + selv.type
Her tar man i mot de samme dataene som i superklassen, hvor disse videresendes for å klargjøre denne delen først.
Til slutt angir man en ny definisjon av metoden hentBeskrivelse så denne gir en mer utfyllende beskrivelse.
Eksempel på bruk av underklassen over:
minMotorsykkel = TohjulsMotorsykkel("GSX F", 600, 1995, "svart og oransje", "Suzuki", "sportstouring") minMotorsykkel.hentBeskrivelse() # gir: # "GSX F 600 1995, produsert av Suzuki, svart og oransje, type sportstouring"
Her inneholder beskrivelsen det nye feltet type.