Als developer, wil ik gegevens die bij elkaar horen in één blauwdruk vastleggen in plaats van in steeds meer losse variabelen, zodat ik een derde of vierde ding kan toevoegen zonder dat mijn code dichtslibt met losse namen die ik zelf uit elkaar moet houden.
Een class is geen ding — het is een blauwdruk voor een ding. Je schrijft
hem één keer. Daarna maak je er met Naam() zoveel objecten uit als je wilt, allemaal
volgens dezelfde vorm.
Een class definieer je met het sleutelwoord class, een naam (met een Hoofdletter,
dat is de conventie) en een dubbele punt. Eronder, ingesprongen, staan de eigenschappen die elk
exemplaar krijgt:
class Dog:
energy = 100
tricks = 0
Dit maakt nog geen hond. Het legt alleen vast wat een hond is. Een echte hond — een object — maak je door de class aan te roepen als een functie, met haakjes:
rex = Dog() # een object, gemaakt volgens de blauwdruk
print(rex.energy) # 100
Met een punt vraag je de eigenschappen (attributen) op: rex.energy.
Elke keer dat je Dog() aanroept, krijg je een nieuw, apart object terug.
Dog is de blauwdruk. rex is een object dat eruit gemaakt is. Die
naamconventie (PascalCase voor classes, snake_case voor objecten) helpt je in één oogopslag zien
wat wat is.
Links staat de blauwdruk. Klik op Dog() aanroepen en er rolt telkens een nieuw object uit — allemaal dezelfde vorm, maar elk een eigen exemplaar.
De class Dog is al voor je gedefinieerd (met energy = 100 en
tricks = 0). Maak er objecten uit en vraag hun attributen op.
rex = Dog() — maak een object.rex.energy — vraag een attribuut op.bella = Dog() — maak een tweede object.bella.tricks — ook Bella heeft de startwaarden.rex — vraag het object zelf op. Wat toont Python?Bouw een blauwdruk voor een speler in een spel. In de theorie ging het over honden; jij maakt nu iets nieuws.
Player met de startattributen lives (bijvoorbeeld
3) en score (0).lives en score.Acceptatiecriteria
Player met een Hoofdletter en minstens twee startattributen.Player() twee losse objecten aan.player.score).Player de blauwdruk is en jouw twee objecten de dingen.