puzzles/, users/, of core/).abc module.🔎 Waarom beginnen met de abstracte klasse?
- Zo definieer je het contract waar de concrete klassen zich aan moeten houden.
- Het helpt het team te begrijpen welke methodes verplicht zijn.
from abc import ABC, abstractmethod
class Animal(ABC):
"""
Abstracte klasse die de basisdefinitie geeft voor alle dieren.
Verplichte methoden:
- make_sound(): moet het geluid van het dier teruggeven.
- move(): moet beschrijven hoe het dier zich verplaatst.
"""
@abstractmethod
def make_sound(self) -> str:
"""Geeft het geluid van het dier terug."""
pass
@abstractmethod
def move(self) -> str:
"""Geeft terug hoe het dier zich verplaatst."""
pass
class Dog(Animal):
"""
Concrete klasse die een hond voorstelt.
Inherits:
Animal: Abstracte klasse.
Methoden:
- make_sound(): geeft het geluid 'Bark!' terug.
- move(): beschrijft dat de hond loopt.
"""
def make_sound(self) -> str:
"""Geeft het geluid van een hond terug."""
return "Bark!"
def move(self) -> str:
"""Geeft terug dat de hond loopt."""
return "The dog walks."
Een unit test controleert of een klein onderdeel (bijvoorbeeld een klasse of methode) correct werkt.
Alle uitleg over unit tests vind je in het hoofdstuk daarover, bij basics.
puzzlesPuzzleRiddlePuzzle: implementeer check_solution() en get_hint().CodeLockPuzzle: idem.Unit tests:
check_solution("antwoord") het juiste resultaat?get_hint() terug met de verwachte string?usersUserPlayerAdminUnit tests:
get_role() de juiste rol teruggeeft.display_info() de juiste informatie toont.coreComponentTimerLoggerUnit tests:
start() en stop() de status van het component aanpassen.status() de verwachte output geeft.