Een vrij klassieke manier om kleuren voor te stellen in computerprogramma's bestaat erin een kleur op te splitsen in drie componenten: rood, groen en blauw. Elk van deze componenten is een geheel getal en neemt een waarde tussen 0 en 255 (inclusief de grenzen) aan. Binnen dit systeem komen de grijswaarden overeen met de kleuren waarin de drie componenten dezelfde waarde hebben.
Als een foto als een grijswaarde-afbeelding moet afgedrukt worden, moet elke kleur omgezet worden naar een specifieke grijswaarde. Je zou hiervoor bijvoorbeeld de gemiddelde waarde kunnen gebruiken, maar dit geeft een verkeerde beeld, doordat het menselijke oog niet even gevoelig is voor elke kleur. Daarom wordt vaak gebruikgemaakt van de volgende omzetting:
grijswaarde = 30% van rood + 59% van groen + 11% van blauw
Als een foto in beperkte mate onherkenbaar moet gemaakt worden, gaat men soms bepaalde stukken van de foto inverteren. Hierbij wordt elke kleur vervangen door zijn inverse kleur. Om deze kleur te verkrijgen, moet je elke component vervangen door 255 min die component.
Je opdracht bestaat erin een klasse Kleur aan te maken met volgende methoden:
De initialisatiemethode __init__ krijgt als parameters de drie kleurcomponenten mee, waarbij elke kleurcomponent standaard de waarde 0 krijgt. Zorg ervoor dat enkel componenten tussen 0 en 255 gebruikt worden: waarden kleiner dan 0 vervang je door 0, waarden groter dan 255 vervang je door 255.
De methode __str__ stelt deze kleur als string voor in de vorm (R, G, B), waarbij R, G en B voor de verschillende componenten staan.
De methode invers geeft een nieuwe Kleur terug die de inverse kleur voorstelt.
De methode grijswaarde geeft een nieuwe Kleur terug die de grijswaarde van deze kleur voorstelt volgens bovenstaande berekening.
>>> k = Kleur(128, 62, -50)
>>> print(k)
(128, 62, 0)
>>> k = Kleur(128, 62, 350)
>>> k
(128, 62, 255)
>>> g = k.grijswaarde()
>>> g
(103, 103, 103)
>>> i = k.invers()
>>> i
(127, 193, 0)
>>> i.grijswaarde()
(151, 151, 151)