Sprint 6 · De blauwdruk  ·  US2: De constructor & self

Als developer, wil ik dat elk nieuw object verplicht met de juiste startgegevens wordt aangemaakt en zelf weet welk object het is, zodat ik nooit een halfleeg object rondstuur en elke methode met de juiste eigen data werkt.

Taak 2: self — welk object ben ik?

In elke constructor staat self als eerste parameter. Dat is geen toverwoord: het is simpelweg het object dat op dit moment gemaakt wordt. Daardoor weet Python precies bij welk object self.name hoort.

self is "dit object hier"

Kijk nog eens naar de constructor. De eerste parameter heet altijd self:

class Dog:
    def __init__(self, name):
        self.name = name
        self.energy = 100

Wanneer je Dog("Rex") schrijft, maakt Python een nieuw object en geeft dat als self mee aan __init__. Binnen de constructor betekent self dus: het object dat nu ontstaat. self.name = name zet de naam op precies dat object — niet op een ander.

rex = Dog("Rex")      # tijdens deze aanroep IS self het nieuwe rex-object
bella = Dog("Bella")  # tijdens DEZE aanroep IS self het nieuwe bella-object
self schrijf je nooit zelf mee.
Je typt Dog("Rex") met één argument, maar __init__ heeft er twee (self en name). Python vult self automatisch in met het nieuwe object. Jij levert alleen de rest.

Zie waar self naar wijst

Kies een aanroep. De spotlight laat zien welk object op dat moment self is — en dus waar self.name = name naartoe schrijft.

rex
name = ?
energy = 100
bella
name = ?
energy = 100
>>> Oefenomgeving: Python REPL Simulator

De class Dog met __init__(self, name) is gedefinieerd. Maak twee honden en bewijs dat self bij elke aanroep het juiste object was.

  1. rex = Dog("Rex")
  2. bella = Dog("Bella")
  3. rex.name — self was hier rex.
  4. bella.name — self was hier bella.
  5. rex.name = "Rexje" en daarna bella.name — is Bella nog Bella?
Python 3.11 REPL Simulator · class Dog met __init__(self, name) is gedefinieerd.
>>> 
🧩

Jouw opdracht: bewijs dat self klopt

Gebruik je Player-class met de constructor uit de vorige taak.

  1. Maak drie spelers aan met verschillende namen.
  2. Print van elke speler zijn naam en bewijs dat elke speler zijn eígen naam heeft.
  3. Verander de naam van speler 1 en laat zien dat de andere spelers ongemoeid blijven.
  4. Schrijf in commentaar in je eigen woorden wat self was tijdens elke aanroep.

Acceptatiecriteria

  • Er zijn drie spelers, elk met een eigen naam via de constructor.
  • De uitvoer laat drie verschillende namen zien.
  • Het aanpassen van één speler raakt de andere niet.
  • In commentaar leg je uit wat self tijdens elke Player(...) was.