Als gamedeveloper, wil ik dat elk spelobject zijn eigen toestand binnen zichzelf bijhoudt en aanpast, zodat een losse functie nooit per ongeluk het verkeerde object of een zwevende variabele raakt.
Methodes kunnen meer dan alleen de state aanpassen โ ze kunnen ook informatie
teruggeven. Je leert het verschil tussen een methode die iets print versus een
methode die iets teruggeeft met return.
Tot nu toe schreven methodes als turn_on() die de state aanpassen maar
niets teruggeven. Maar een methode kan ook een waarde berekenen en die
terugsturen naar de aanroeper. Vergelijk:
class Lamp:
def __init__(self, name, power):
self.name = name
self.power = power # in watt
self.is_on = False
def print_consumption(self): # print โ NIET herbruikbaar als waarde
print(self.power * 0.001, "kW")
def get_consumption(self): # return โ kan je opslaan of vergelijken
return self.power * 0.001
Het verschil merk je zodra je de methode wil gebruiken in een berekening:
lamp = Lamp("desk", 60)
# โ print-variant โ je kunt er niets mee doen na de aanroep
total = lamp.print_consumption() * 5 # TypeError: NoneType * int
# โ
return-variant โ kan je opslaan, printen, optellen, vergelijken
consumption = lamp.get_consumption() # 0.06
print("Consumption:", consumption, "kW") # Consumption: 0.06 kW
print("5 hours:", consumption * 5, "kWh") # 5 hours: 0.3 kWh
return = None.
Als een methode geen return heeft, geeft Python automatisch None
terug. Dat is niet een fout โ maar als jij probeert None * 5 te berekenen,
crasht je programma alsnog.
Druk op Volgende stap en volg hoe de aanroep door de methode loopt en de return-waarde terug naar de aanroeper vloeit.
consumption = lamp.get_consumption()
def get_consumption(self):
return self.power * 0.001 # = 0.06
consumption = 0.06 โ
Ontdek het verschil tussen een methode met en zonder return.
lamp = Lamp("desk", 60)lamp.print_consumption() โ wat zie je? Geen return-waarde.x = lamp.print_consumption() โ sla het resultaat op.x โ wat is de waarde van x?lamp.get_consumption() โ nu met return.y = lamp.get_consumption()y * 5 โ nu kan je er mee rekenen!lamp.get_status() โ een methode die een f-string returnt.Je geeft je speler methodes die informatie teruggeven โ zodat je code er beslissingen mee neemt.
Player met in __init__ onder andere
self.health = 3 en self.y = 100.get_health(self) die self.health teruggeeft
(met return, niet print).is_alive(self) die True teruggeeft als de health
boven 0 is.is_alive() in een if-statement om
"game over" te bepalen.get_health() in een variabele en reken ermee โ toon zo
het verschil met een methode die alleen print.Acceptatiecriteria
get_health() gebruikt return en de waarde is op te slaan in een variabele.is_alive() geeft een bool terug die in een if bruikbaar is.if player.is_alive(): stuurt de "game over"-beslissing correct aan.