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.
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.
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
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.
Kies een aanroep. De spotlight laat zien welk object op dat moment self is — en dus
waar self.name = name naartoe schrijft.
De class Dog met __init__(self, name) is gedefinieerd. Maak twee honden
en bewijs dat self bij elke aanroep het juiste object was.
rex = Dog("Rex")bella = Dog("Bella")rex.name — self was hier rex.bella.name — self was hier bella.rex.name = "Rexje" en daarna bella.name — is Bella nog Bella?Gebruik je Player-class met de constructor uit de vorige taak.
self was tijdens elke aanroep.Acceptatiecriteria
self tijdens elke Player(...) was.