Gevorderde Python-ontwikkelingscursus
Hoofdstuk
>
Niveau
Gevorderde Klassen
Overbelasting van vergelijkingen
Doelstelling
Controleer en label zendingen correct door gebruik te maken van Comparison Overloading.
De laadsteiger heeft een aantal wijnvaten die klaar zijn om naar winkels gebracht te worden, maar eerst gelabeld en voorbereid moeten worden zodat arbeiders ze zonder problemen kunnen selecteren en verzenden. Om dit te doen moet je Comparison Overloading gebruiken, vergelijkbaar met Operator Overloading die je in het vorige hoofdstuk geleerd hebt. Deze keer moet je een klasse overladen met vergelijkingsoperatoren.
Er zijn drie (3) bestellingen op de steiger, elk met twee (2) vaten. Elke bestelling heeft een bord bedoeld om de gewichtsverhouding van de vaten in de bestelling aan te geven. Er is een klasse in de editor genaamd barrel die je toelaat om Comparison Overloading te gebruiken. Ook zijn er drie (3) functies in de editor: less_than(), greater_than(), equal_to(). Deze functies worden gebruikt om de gewichtsverhouding op de borden vast te leggen.
Begin door naar de donkere en lichte X-tekens op de rode kleedpaden te lopen en ga richting de vaten. Gebruik de functie read() om de naam van de wijn in het vat en het gewicht van het vat te bepalen, zoals dit: await player.read(). Maak objecten voor de donkere en lichte vaten met behulp van de barrel klasse en voeg de informatie toe die je met de read() functie hebt verkregen. Zodra de objecten zijn aangemaakt, maak je een ander object dat beide objecten vergelijkt. Bijvoorbeeld:
red_barrel_dark = barrel("Wine name", 000) red_barrel_light = barrel("Wine name", 000) red_barrel_compare = red_barrel_dark < red_barrel_light
Zorg ervoor dat je de naam van de wijn in het barrel klasse object exact schrijft zoals die wordt weergegeven in het bericht wanneer je read() gebruikt.
Creëer de objecten volgens de naamgevingsconventies die horen bij het kleedpad en het kleur X-teken. Voor het rode kleedpad, wanneer je de vaten vergelijkt, gebruik je de < operator om te controleren of het donkere vat een lager gewicht heeft dan het lichte vat. Om dit segment af te ronden, loop je naar het gouden X-teken op het rode kleedpad en richt je op het bord. Gebruik de functie less_than() met het vergelijkingobject om de gewichtsverhouding van de vaten vast te leggen, zoals dit: less_than(red_barrel_compare).
Loop vervolgens naar de donkere en lichte X-tekens op het groene kleedpad en herhaal hetzelfde proces. Gebruik de read() functie op de donkere en lichte X-tekens en maak overeenkomstige objecten met die informatie. Voor het vergelijkingobject van het groene kleedpad gebruiken we deze keer de > operator om te controleren of het donkere vat zwaarder is dan het lichte vat. Loop naar het gouden X-teken op het groene kleedpad en richt je op het bord. Gebruik de functie greater_than() met het vergelijkingobject om de gewichtsverhouding van de vaten vast te leggen, zoals dit: greater_than(green_barrel_compare).
Loop naar de donkere en lichte X-tekens op het blauwe kleedpad en herhaal hetzelfde proces. Gebruik de functie read() op de donkere en lichte X-tekens en maak overeenkomstige objecten met die informatie. Voor het vergelijkingobject van het blauwe kleedpad gebruiken we deze keer de == operator om te controleren of het donkere vat evenveel weegt als het lichte vat. Loop naar het gouden X-teken op het blauwe kleedpad en richt je op het bord. Gebruik de functie equal_to() met het vergelijkingobject om de gewichtsverhouding van de vaten vast te leggen, zoals dit: equal_to(blue_barrel_compare).
Zodra alle bestellingen gelabeld zijn, loop dan naar het gouden X-teken op het oranje kleedpad bij de uitgang van de steiger. Richt je op het bord en gebruik de functie write() om op te schrijven wat er op elke bestelling staat. Schrijf de namen van elk van de vaten volgens de objecten die je hebt aangemaakt, bijvoorbeeld voor de vaten op het rode kleedpad: red_barrel_dark.name , red_barrel_light.name. Doe dit voor alle zes de vaten om het level te voltooien.