Python Academy · Les

Enkelvoudige overerving

Maak childklassen die attributen en methoden van een parent overerven.

Les 1 van 414 stappen

Enkelvoudige overerving is een gratis Python Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Python Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Python Academy bevat in totaal 4 lessen.

Inleiding

Met overerving kan een subklasse het gedrag van een bovenliggende klasse hergebruiken en uitbreiden zonder code te dupliceren.

Een subklasse definiëren

class Dog(Animal): erft alles van Animal. De subklasse kan nieuwe methoden toevoegen of bestaande methoden overschrijven.
class Animal:
    def __init__(self, name): self.name = name
    def speak(self): return '...'
class Dog(Animal):
    def speak(self): return 'Woof'
d = Dog('Rex')
print(d.name, d.speak())

super().__init__ aanroepen

super().__init__(args) roept de __init__ van de bovenliggende klasse aan. Roep deze altijd aan in de subklasse wanneer de bovenliggende klasse initialisatielogica bevat.
class Animal:
    def __init__(self, name): self.name = name
class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name)
        self.breed = breed
d = Dog('Rex', 'Labrador')
print(d.name, d.breed)

Methoden overerven

De subklasse erft alle methoden van de bovenliggende klasse. Als je deze niet overschrijft, werken ze ongewijzigd.
class Vehicle:
    def start(self): return 'starting'
class Car(Vehicle):
    pass
print(Car().start())

Methoden overschrijven

Definieer dezelfde methodenaam in de subklasse om de versie van de bovenliggende klasse te vervangen. De versie van de subklasse wordt aangeroepen.
class Shape:
    def area(self): return 0
class Square(Shape):
    def __init__(self, s): self.s = s
    def area(self): return self.s**2
print(Square(4).area())

Gedrag van de bovenliggende klasse uitbreiden

Roep super().method() aan binnen de overschreven methode om eerst de versie van de bovenliggende klasse uit te voeren en daarna meer gedrag toe te voegen.
class Animal:
    def describe(self): return 'I am an animal'
class Dog(Animal):
    def describe(self): return super().describe() + ' and a dog'
print(Dog().describe())

isinstance() en issubclass()

isinstance(obj, Parent) retourneert ook True voor instanties van subklassen. issubclass(Child, Parent) controleert de klassenhiërarchie.
class Animal: pass
class Dog(Animal): pass
d = Dog()
print(isinstance(d, Animal))
print(issubclass(Dog, Animal))

De subklasse voegt nieuwe methoden toe

De subklasse kan volledig nieuwe methoden definiëren die de bovenliggende klasse niet heeft.
class Animal:
    def __init__(self, name): self.name = name
class Dog(Animal):
    def fetch(self): return f'{self.name} fetches!'
print(Dog('Rex').fetch())

Beschermde attributen

_name geeft volgens de conventie aan: 'benader dit niet van buiten de klasse'. Subklassen MOGEN deze attributen gebruiken.
class Animal:
    def __init__(self, name): self._name = name
    def name(self): return self._name
class Dog(Animal):
    def bark(self): return f'{self._name} barks'
print(Dog('Rex').bark())

Abstracte basisklassen

from abc import ABC, abstractmethod verplicht subklassen om methoden te implementeren.
from abc import ABC, abstractmethod
class Shape(ABC):
    @abstractmethod
    def area(self): pass
class Circle(Shape):
    def __init__(self, r): self.r = r
    def area(self):
        import math
        return math.pi * self.r**2
print(Circle(3).area())

__bases__ en __mro__

Dog.__bases__ toont de directe bovenliggende klassen. Dog.__mro__ toont de volledige volgorde voor methodebepaling.
class A: pass
class B(A): pass
class C(B): pass
print(C.__mro__)

Korte controle

Wat doet super().__init__() in een subklasse?

Samenvatting

Overerving: class Child(Parent). super() benadert de bovenliggende klasse. Overschrijf methoden om gedrag te wijzigen. isinstance() controleert de hiërarchie. ABC dwingt abstracte contracten af.

Ga door

Uitstekende voortgang! Ga door om het volgende concept onder de knie te krijgen.
Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
76
Lessen
320

Veelgestelde vragen

Is de les “Enkelvoudige overerving” gratis?

Ja — de volledige tekst van “Enkelvoudige overerving” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Python Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Python Academy bevat in totaal 4 lessen.

Wat leer ik in “Enkelvoudige overerving”?

Maak childklassen die attributen en methoden van een parent overerven. Je oefent met Python Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Python Academy te beginnen?

Ervaring vooraf is niet nodig. Python Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Enkelvoudige overerving”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Python Academy?

Ja. Elke les over Python Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Enkelvoudige overerving
  2. Methoden overschrijven en super()
  3. Meervoudige overerving en MRO
  4. Polymorfisme en duck typing
← Terug naar Python Academy