ID.nl logo
Zo kun je programmeren in Python - deel 8
© PXimport
Zekerheid & gemak

Zo kun je programmeren in Python - deel 8

Tot nu toe leerde je heel wat mogelijkheden van de programmeertaal Python. Misschien ben je buiten onze lessen zelf al aan de slag gegaan met je kennis. Super, want programmeren leer je door het veel te doen. Maar een goed programma is ook gedocumenteerd en goed getest. Dat leer je in onze achtste les.

Hier vind je les 1 van de Python-cursus.

Verkeerde gewoontes leer je niet snel af, daarom dat we nu even een stapje terugdoen en nadenken over wat ‘goede code’ is. Na deze les kun je code produceren die niet alleen goed gedocumenteerd en goed getest is, maar weet je ook hoe je informatie over Python-modules opzoekt met de helpfunctie.

Code documenteren met commentaar

Tot nu toe schreven we onze code zonder enige vorm van documentatie. Als je met anderen samenwerkt aan een programma, is het belangrijk dat je die documenteert, zodat je anderen duidelijk maakt wat je met je code bedoelt. Maar ook als je helemaal alleen programmeert, is documentatie geen overbodige luxe. Zo begrijp je je eigen code nog als je er over een jaar opnieuw naar kijkt.

De eerste manier om je code te documenteren is met commentaar. Alles na het #-teken (hekje) tot het einde van de regel (behalve als het hekje ín een string voorkomt) is commentaar en wordt door Python genegeerd. Op die manier kun je een uitleg voor jezelf of anderen schrijven. Als je bijvoorbeeld in de functie is_palindroom van deel 6 in de war raakt met die indexen, schrijf er dan gerust wat commentaar bij:

if letters[0] != letters[-1]: # Als de eerste en de laatste letter verschillen

Het getuigt van goede stijl om twee spaties tussen je code en het erna volgende commentaarteken te houden en één spatie tussen het commentaarteken en je commentaar. Overigens kun je ook commentaar op een nieuwe losstaande regel beginnen, dan spreken we van een commentaarregel:

# Als de eerste en de laatste letter verschillen

if letters[0] != letters[-1]:

Het is de gewoonte om een commentaarregel te zetten op de regel vóór de regel waarover hij gaat.

Code uitcommentariëren

Het commentaarteken (#) wordt ook weleens gebruikt om code die je aan het testen bent maar die niet blijkt te werken tijdelijk ‘uit te commentariëren’ ofwel uit te zetten. Door een commentaarteken voor de code te zetten, wordt de code door Python genegeerd, maar kun je hem erna wel eenvoudig weer inschakelen door het commentaarteken weg te halen. Op deze manier gebruik je het commentaarteken dus niet voor documentatie, maar eigenlijk als hulpmiddel bij het debuggen.

Code documenteren met docstrings

Commentaar gebruik je om te documenteren waarom je iets doet en hoe je het doet, maar voor gebruikers van je code is vooral belangrijk wat die doet. Om dat te documenteren, gebruik je docstrings: in het begin van elke module, elke klasse en elke functie of methode geef je met een string tussen drie dubbele aanhalingstekens aan wat het stuk code doet.

Zo zouden we onze klassen uit de vorige les als volgt kunnen documenteren:

"""Klassen om met tweedimensionale, driedimensionale en hogerdimensionale punten te werken."""

import math

class Point:
"""Stelt een punt voor in een willekeurig aantal dimensies."""

def __init__(self, *coordinates):
"""Initialiseer het punt met de opgegeven coördinaten."""
self.coordinates = list(coordinates)

def __repr__(self):
"""Geef een leesbare voorstelling van het punt terug."""
return 'Point(' + ', '.join(str(co) for co in self.coordinates) + ')'

def displacement(self, other_point):
"""Geef het verschil terug tussen dit punt en een ander punt.

De overeenkomstige coördinaten worden van elkaar afgetrokken.

Voorbeeld: het verschil tussen Point(1, 4, 2) en Point(3, 4, 1) is gelijk aan Point(2, 0, -1).
"""
return Point(*[a-b for a, b in zip(other_point.coordinates, self.coordinates)])

def distance(self, other_point):
"""Geef de Euclidische afstand terug tussen dit punt en een ander punt."""
relative_position = self.displacement(other_point)
return math.sqrt(sum(i**2 for i in relative_position.coordinates))
class Point2D(Point):
"""Stelt een tweedimensionaal punt voor."""

def __init__(self, x=0, y=0):
"""Initialiseer het punt met de opgegeven x- en y-coördinaten."""
Point.__init__(self, x, y)
self.x = x
self.y = y
def get_x(self):

"""De x-coördinaat van het punt."""
return self.coordinates[0]

def set_x(self, x):
self.coordinates[0] = x

x = property(get_x, set_x)

def get_y(self):
"""De y-coördinaat van het punt."""
return self.coordinates[1]

def set_y(self, y):
self.coordinates[1] = y

y = property(get_y, set_y)

Je ziet hier dat documentatie niet lang hoeft te zijn. De docstrings bij de module, de klassen en bij de meeste methodes zijn maar één regel lang.

De moeilijkste methode om te begrijpen is displacement en daarom is het zinvol om daar wat meer uitleg bij te geven. Bij een docstring van meer dan één regel raden we aan om na de eerste regel een lege regel te houden, en om de drie dubbele aanhalingstekens op het einde op een nieuwe regel te zetten. Dat geeft wat meer overzicht.

Merk op: bij onze eigenschappen x en y van de klasse Point2D documenteren we alleen de methode die de waarde van de eigenschap opvraagt. Zo toont de ingebouwde helpfunctie van Python (die we op het einde van deze les bespreken) deze documentatie bij de eigenschap.

Interactieve voorbeelden in docstrings

We hebben in de docstring van de methode displacement al een voorbeeld van het gebruik van de methode gegeven als documentatie. Maar dat bleef nogal informeel. We kunnen die documentatie ook in de vorm van echte Python-code doen die je in een interactieve terminalsessie zou kunnen invoeren. Zo kan de gebruiker die de documentatie leest, onmiddellijk de voorbeelden kopiëren uit de documentatie en plakken in de Python-interpreter om ze uit te proberen. Dat zou voor de methode displacement er dan als volgt uitzien:

def displacement(self, other_point):
"""Geef het verschil terug tussen dit punt en een ander punt.

De overeenkomstige coördinaten worden van elkaar afgetrokken.

>>> Point(1, 4, 2).displacement(Point(3, 4, 1))
Point(2, 0, -1)
"""
return Point(*[a-b for a, b in zip(other_point.coordinates, self.coordinates)])

Je ziet hier dat je de code na de >>> exact in een Python-terminalsessie zou kunnen invoeren en dan ook het resultaat zou krijgen dat hier staat. In feite hebben we wat hier staat gewoon eerst in de terminal van Thonny ingevoerd en dan samen met de uitvoer gekopieerd en hier in de docstring geplakt.

Code testen met doctest

Stel dat je nu ooit de code van de methode displacement aanpast omdat je denkt een verbetering te zien, maar er een fout in maakt, waardoor het resultaat verkeerd is. Dan kun je dat testen door de voorbeeldcode in je docstring uit te voeren in een Python-terminalsessie. Voer je de code uit en komt het resultaat niet overeen met de uitvoer in de docstring, dan klopt je code niet meer.

Maar zouden we die test niet automatisch kunnen doen? Jazeker! Python kent daarvoor de module doctest, die automatisch alle docstrings in een module kan testen op interactieve voorbeelden. Dat voer je als volgt uit in een Linux- of macOS-terminal of de Windows Opdrachtprompt:

python3 -m doctest -v point.py

Hierbij is point.py de naam van de module met je code erin. Je krijgt dan als uitvoer de tests die doctest in je docstrings ziet en het resultaat. Als je het alleen wilt zien als een test een fout vindt, haal dan de optie -v weg. Stel dat je bijvoorbeeld per ongeluk de * vergeten bent in de methode displacement om de lijst naar een willekeurig aantal argumenten voor de klasse Point om te zetten, dan zal doctest die fout opmerken met de volgende melding:

**********************************************************************

File "point.py", line 21, in point.Point.displacement

Failed example:

Point(1, 4, 2).displacement(Point(3, 4, 1))

Expected:

Point(2, 0, -1)

Got:

Point([2, 0, -1])

**********************************************************************

1 items had failures:

1 of

***Test Failed*** 1 failures.

Een goede manier van programmeren is dan ook dat je je code zoveel mogelijk documenteert met docstrings en daarin ook interactieve voorbeelden opneemt, die je na elke wijziging van je code automatisch test met doctest om je ervan te verzekeren dat je geen fouten hebt geïntroduceerd.

De helpfunctie gebruiken

Als je code is gedocumenteerd, hoef je niet je codebestand in Thonny te openen om de documentatie te bekijken. Je kunt dit in een interactieve Python-sessie, bijvoorbeeld in Thonny, maar ook in een Python-sessie in een Linux- of macOS-terminal of de Windows Opdrachtprompt. Het enige wat je hoeft te doen, is de functie help op te roepen met de naam van de module, klasse, functie of methode waarvoor je de documentatie wilt zien. Bijvoorbeeld in Thonny:

>>> help(Point.displacement)

Help on function displacement in module __main__:

displacement(self, other_point)

Geef het verschil terug tussen dit punt en een ander punt.

De overeenkomstige coördinaten worden van elkaar afgetrokken.

>>> Point(1, 4, 2).displacement(Point(3, 4, 1))

Point(2, 0, -1)

Overigens zijn alle standaardmodules van Python uitgebreid gedocumenteerd met docstrings. Daardoor kun je van alle modules, klassen, functies en methodes heel eenvoudig documentatie opvragen in je Python-terminalsessie. Let er wel op dat je een module eerst dient te importeren voordat je er documentatie van kunt opvragen met help.

Samenvatting

In deze les ging het minder over het programmeren zelf, maar over het documenteren en testen van je Python-programma’s en het uitzoeken van meer informatie over de standaard Python-modules of je eigen modules. Hoe complexer je programma’s zijn, hoe belangrijker dit soort zaken rond je code zijn. Maak er daarom een gewoonte van om documentatie en tests niet als een nabeschouwing te zien, maar al tijdens de ontwikkeling van je programma in je code te integreren. In de volgende les maken we het nog complexer: dan gaan we extra modules installeren die niet in Python ingebouwd zijn.

Opdracht 1

Voer de helpfunctie eens uit op je klasse Point2D. Wat zou er nog beter kunnen aan de getoonde documentatie?

Uitwerking opdracht 1

*>>> from point import Point2D

help(Point2D)* De helpfunctie van onze klasse toont niet alleen de eigenschappen x en y bij de Data descriptors, maar toont ook de methodes get_x, set_x, get_y en set_y. Dat is wat te veel van het goede. Die methodes hoeven niet getoond te worden. Daar doen we in de volgende opdracht iets aan.

Opdracht 2

We hebben een eigenschap zoals x in de klasse Point2D tot nu toe geconstrueerd met methodes get_x en set_x en een opdracht als x = property(get_x, set_x) om deze methodes samen als eigenschap te gebruiken. Maar je kunt een eigenschap ook met een decorator definiëren en dan worden die methodes niet in de helpuitvoer getoond. Zoek zelf met de ingebouwde helpfunctie van Python op hoe je dat doet.

Uitwerking opdracht 2

Met help(property) krijg je uitleg over de opdracht property. Je leert er zelfs dat het geen opdracht maar een klasse is. Het in de helpuitvoer getoonde voorbeeld kun je bijna rechtstreeks toepassen op onze klasse Point2D. Dan kom je tot de volgende code voor x: *@propertydef x(self):"""De x-coördinaat van het punt."""return self.coordinates[0]@x.setter**def x(self, x):*self.coordinates[0] = x Doe hetzelfde voor y. Voer de helpfunctie opnieuw uit op je klasse en verifieer dat je alleen nog maar hulp over de eigenschappen krijgt en niet meer over de methodes die de eigenschappen opbouwen.

Cheatsheet

Commentaar: een regel die begint met # en dient als uitleg bij een stukje code. Debuggen: fouten (bugs) in je code opsporen en verhelpen. Docstring: een string tussen drie dubbele aanhalingstekens die een module, klasse, functie of methode documenteert. Uitcommentariëren: een regel code uitschakelen door er een commentaarteken voor te zetten.

▼ Volgende artikel
Backcover, bookcase of 2-in-1? Vind jouw ideale smartphonehoesje
© dinastya
Huis

Backcover, bookcase of 2-in-1? Vind jouw ideale smartphonehoesje

Nieuwe smartphone, nieuw hoesje! Het lijkt zo simpel, maar toch kan het vinden van een passend ‘jasje’ lastig zijn. Voor vrijwel ieder mobiel toestel is de keuze namelijk enorm. Daarnaast zijn er verschillen op het gebied van bescherming en functionaliteit. Uit welke hoesjes kun je allemaal kiezen en wat zijn hiervan de voor- en nadelen?

In dit artikel laten we zien hoe je een smartphonehoesje kiest dat zowel past bij je stijl als bij je gebruik:

  • Ga voor een backcover, bookcase of 2-in-1-hoesje
  • Overweeg een extra stevig hoesje bij intensief gebruik
  • Personaliseer je toestel met een eigen ontwerp
  • Draag je smartphone met stijl dankzij koordhoesjes of telefoontassen
  • Kies jouw favoriete kleur en denk na over het materiaal

Lees ook, of eerst: Waarom dat hoesje om je telefoon toch echt handig is

Heb je bijvoorbeeld net een iPhone 16 gekocht en wil je daar een bijpassend hoesje voor kopen? De bekende webshop www.smartphonehoesjes.nl verkoopt alleen al voor dit exemplaar ruim duizend verschillende producten! Zie tussen dit overweldigende aanbod maar eens een geschikt exemplaar te vinden. Welk hoesje je het best kunt kopen, hangt grotendeels af van hoe je het duurbetaalde toestel wilt beschermen. Bovendien wil het oog natuurlijk ook wat! Ontdek aan de hand van dit artikel welk smartphonehoesje goed bij je past. 

Backcover

Bij een backcover zijn alleen de achterkant en zijkanten van de smartphone beschermd. Je drukt het toestel in een soort houder, waarna je het aanraakscherm altijd kunt bereiken. Handig, maar tegelijkertijd is het display op die manier wel kwetsbaar voor vuil en krassen. Gebruik om die reden bij voorkeur een goede screenprotector (zie kader).

Een goede backcover heeft verstevigde hoeken die bij een onverhoopte valfungeren als schokdempers. Zo verklein je het risico op een gebroken scherm. Bij de betere hoesjes staat in de specificaties de valbescherming vermeld, bijvoorbeeld één, twee of zelfs vijf meter. Verder heeft een goede backcover verhoogde randen; leg je de smartphone ondersteboven neer, dan beschermen deze randen het display en de selfiecamera.

Het merk Urban Armor Gear (UAG) ontwikkelt backcovers met extra verstevigde hoeken.

Screenprotector

Als je een nieuwe smartphone uit de verpakking haalt, breng je idealiter meteen een screenprotector aan. Het scherm is dan tenslotte nog helemaal schoon en bevat geen vingerafdrukken; hierdoor kan de screenprotector zich goed hechten. Dit transparante laagje beschermt het scherm tegen krassen.

Een screenprotector is weliswaar een eenvoudig beschermingsmiddel, maar toch zijn de kwaliteitsverschillen groot. De goedkoopste producten bestaan uit een dun laagje folie dat je lastig kunt aanbrengen. Met een beetje pech verschijnen er luchtbellen onder de folie. Duurdere modellen zijn gemaakt van gehard glas en voelen hetzelfde aan als het scherm van de smartphone. Je hebt niet eens door dat er een screenprotector op het display is geplakt.

Er bestaan ook nog speciale modellen die het blauwe schermlicht verminderen, waardoor je ogen minder snel vermoeid raken.

Tot slot kun je een screenprotector met een speciaal privacyfilter overwegen, zodat niemand met je mee kan gluren. Alleen wie recht op het scherm kijkt, kan de inhoud zien.

PanzerGlass ontwikkelt voor uiteenlopende smartphones screenprotectors van gehard glas.

Bookcase

Ga je de deur uit, dan neem je al gauw een sleutelbos, smartphone en portemonnee mee. Je zakken zitten dus behoorlijk vol. Met een geschikte bookcase laat je die dikke portefeuille gewoon thuis liggen. Zoals de naam al doet vermoeden, is een bookcase een soort ‘boekje’. Zodra je de flap openslaat, kun je de smartphone bedienen. Deze flap behoedt het scherm voor krassen. Kies bij voorkeur een bookcase met een magnetische sluiting, zodat de flap niet vanzelf kan openklappen.

Een bookcase heeft vrijwel altijd plek voor enkele pasjes . Daarnaast bevat zo’n hoesje doorgaans een groot vak met eventueel een rits, waardoor je nog wat (klein)geld kunt meenemen. Tot slot hebben sommige modellen een geïntegreerde standaard. Nuttig voor wie onderweg geregeld filmpjes kijkt.

Deze bookcase van Nomad vervangt de traditionele portemonnee.

Naast de genoemde pluspunten heeft een bookcover ook enkele nadelen. Vooral tijdens het fotograferen en filmen kan de flap in de weg zitten. Gebruik je de smartphonecamera vaak, dan is dat wel iets om over na te denken. Verder passen er drie, vier, vijf of hooguit zes (bank)pasjes in de bookcase, waardoor je niet alle klantenpassen kunt meenemen. Overigens hoeft dat niet zo’n probleem te zijn, want je kunt die pasjes ook digitaal opslaan. Gebruik hiervoor Stocard of een vergelijkbare app .

Met Stocard heb je alsnog alle klantenpassen van je favoriete winkels op zak.

2-in-1-hoesje

Kun je niet tussen een backcase en bookcover kiezen? Een zogeheten 2-in-1-hoesje biedt het beste van twee werelden. Hierbij bevindt zich een uitneembare backcover in een bookcase . Dat werkt veelal met een magnetische constructie. Handig, want wanneer je de deur uitgaat, maak je de backcase weer vast. Vervolgens heb je de belangrijkste pasjes bij de hand. Wil je filmen of fotograferen? Haal het toestel dan tijdelijk even uit de bookcase. Meestal zijn 2-in-1-hoesjes iets dikker, waardoor ze een goede valbescherming bieden.

Dit 2-in-1-hoesje van Accezz heeft een krachtige magneet, zodat je de backcover in de bookcase kunt bevestigen.

Extra stevig!

Bij gebruik in een fabriek, bouwplaats of soortgelijke omgeving heeft een smartphone meer te lijden. Misschien is dan een extra stevig hoesje iets voor jou. Let hierbij vooral op de dikte van de hoeken. UAG, PanzerGlass (Care) en iDEAL of Sweden produceren bijvoorbeeld op grote schaal robuuste smartphonehoesjes met een valbescherming tot vijf meter. Deze producten voldoen doorgaans aan de militaire MIL-STD-810H-standaard.

Dit hoesje van UAG heeft dikke randen en hoeken, zodat de smartphone moeiteloos een val van maximaal vijf meter overleeft.

MagSafe-hoesje

Heb je een iPhone 12 of nieuwer model, dan ondersteunt het toestel MagSafe. Met behulp van een geïntegreerde magneet kun je diverse accessoires op de achterzijde vastmaken. Denk hierbij aan een draadloze oplader, powerbank, standaard, kaarthouder en autohouder. Als je deze ronde magneet wilt blijven gebruiken, heb je hiervoor een hoes met MagSafe-ondersteuning nodig. Bekende merken als iMoshion, Accezz, OtterBox, UAG en uiteraard Apple ontwikkelen geschikte producten.

Met een MagSafe-hoesje kun je diverse accessoires vastmaken (bron: OtterBox).

Eigen hoes ontwerpen

Een foto van je (klein)kind, huisdier of partner. Met een zelfontworpen hoesje maak je jouw smartphone extra persoonlijk. Verschillende bedrijven kunnen zo’n hoesje voor je maken. Nadat je een geschikt hoesje hebt gekozen, verschijnt er in de browser een ontwerptool. Hierin upload je het beoogde kiekje. Afhankelijk van de gekozen aanbieder kun je mogelijk ook een foto op jouw Facebook- of Instagramaccount selecteren. Gebruik altijd een afbeelding met een hoge resolutie, want anders oogt het resultaat korrelig. Kies je tóch een foto van een matige kwaliteit, dan toont de online ontwerptool waarschijnlijk een waarschuwing.

Het is belangrijk om de foto goed uit te lijnen. Vaak is het namelijk nodig om het beeld wat te schuiven omdat de camera’s bijvoorbeeld een belangrijk gedeelte van de foto afdekken. Afhankelijk van het gekozen product voeg je optioneel ook nog een tekst, illustratie en/of achtergrond toe. Houd er rekening mee dat de meeste gepersonaliseerde smartphonehoesjes geen goede valbescherming bieden.

Voeg in de ontwerptool van Smartphonehoesjes.nl eenvoudig je eigen foto toe.

Koordhoesje of telefoontas?

Met name voor vrouwen zijn koordhoesjes erg interessant. Deze backcover-modellen hebben een lang touwtje of riem . Dat maakt het mogelijk om de smartphone in ‘handtasstijl’ te dragen. Nuttig voor wie het toestel niet in een broek- of jaszak kwijt kan. Je past de lengte van het touwtje of de riem eenvoudig aan.

Als alternatief zijn er uiteraard ook handtassen met een speciaal smartphonevak te koop. Hiermee kun je ook nog wat andere spullen meenemen, zoals sleutels en geld. In plaats van de naam handtas gebruiken veel (web)winkels hiervoor de term telefoontas. Ten slotte bestaan er ook speciale heuptassen waarin je het mobiele toestel kunt opbergen.

Met behulp van de afneembare riem draag je dit koordhoesje van Selencia comfortabel om je schouder.

Kleur en materiaal

Weet je al wat voor smartphonehoesje je wilt kopen? Bedenk dan welke kleur je wilt. Is jouw smartphone een lust voor het oog, dan kun je ook een transparant exemplaar overwegen waarmee het design zichtbaar blijft. Het gebruikte materiaal heeft veel invloed op de aanschafprijs. De goedkoopste producten bestaan uit (dun) kunststof of siliconen; die kun je over het algemeen goed buigen. Geef je iets meer geld uit, dan kun je een stevig kunststof hoesje aanschaffen.

Wie een chic uiterlijk belangrijk vindt, kan een hoesje van imitatieleer of echt leder kopen . Dit betreft in de meeste gevallen bookcovers. Bedenk wel dat dit materiaaltype gevoeliger is voor krassen en beschadigingen. Voor de liefhebbers zijn er in diverse webshops ook nog houten backcovers en spiegelhoesjes te vinden. Ook zijn er diverse fabrikanten die voor hun producten gerecyclede materialen gebruiken.

Nomad ontwikkelt voor diverse toestellen stijlvolle hoesjes van echt leer.

Tot slot

Hopelijk geeft dit artikel je voldoende handvatten om een geschikt en betaalbaar smartphonehoesje te vinden. De allergoedkoopste hoesjes van enkele euro’s laat je trouwens het beste links liggen. Die zitten meestal ‘slap’ om het toestel, waardoor er op den duur ruimte tussen het hoesje en de smartphone ontstaat. Goede (plastic) hoesjes kun je vanaf een bedrag van grofweg tien euro vinden.

Watch on YouTube
▼ Volgende artikel
Haar voor je geld: 5 stylingtangen en föhns voor een piekfijne Moederdag
© Prostock-studio
Gezond leven

Haar voor je geld: 5 stylingtangen en föhns voor een piekfijne Moederdag

Op zoek naar een leuk cadeau voor moeder? Maak niet de fout om aan te komen met wasmiddel, een stofzuiger of iets anders uit de categorie 'nuttig', maar verras haar met iets waar ze écht blij van wordt. We hebben voor jou een selectie gemaakt van vijf föhns en stijltangen die door andere gebruikers gewaardeerd worden met minimaal een 8. Zo laat je haar (haar) deze Moederdag echt shinen!

DYSON Airwrap I.D. Straight + Wavy Multistyler

De Dyson Airwrap I.D. is een veelzijdige 6-in-1 multistyler die droogt, krult, golft, gladmaakt, volume geeft en pluizig haar temt. Dankzij intelligente warmte- en luchtstroomregeling hoef je je geen zorgen te maken over (hitte)beschadiging van je haar. Het conische Airwrap-opzetstuk met taps toelopende punt maakt het mogelijk om dichter bij de haaraanzet te stylen. In de praktijk betekent dat: strakkere krullen met behoud van volume en veerkracht. Handig: via bluetooth kun je het apparaat koppelen aan de MyDyson-app voor gepersonaliseerde stylinginstellingen.

Toepassingen: drogen, krullen, golven, gladmaken, volume geven, pluizig haar temmen Bijgeleverde accessoires: Fast Dryer, Flyaway + Smoother, Conisch Airwrap, 40mm Airwrap lang, zachte gladmakende borstel, grote ronde volumeborstel, opbergcase, filterreinigingsborstel Consumentenscore op Kieskeurig.nl: 8,8

BaByliss Hydro Fusion 2100 (D773DE)

De BaByliss Hydro Fusion 2100 is een krachtige föhn met een vermogen van 2100 watt, uitgerust met geavanceerde plasmatechnologie en een dubbel ionensysteem. Deze technologie hydrateert het haar en vermindert pluizigheid tijdens het drogen, wat resulteert in glad en glanzend haar. Met een gewicht van slechts 420 gram en een 2,5 meter lange kabel is deze föhn licht en gebruiksvriendelijk. De meegeleverde diffuser is ideaal voor het definiëren van natuurlijke krullen en textuur.

Toepassing: drogen, gladmaken, krullen definiëren Bijgeleverde accessoires: smalle blaasmond, diffuser Consumentenscore op Kieskeurig.nl: 8,6

Remington ONE Dry & Style (D6077)

De Remington ONE Dry & Style is een veelzijdige föhn met een 2000 watt motor die luchtstromen tot 120 km/u genereert voor snel drogen. Dankzij de Thermacare-sensor wordt de luchttemperatuur gereguleerd om het haar te beschermen tegen oververhitting. Met acht warmte- en snelheidsinstellingen kun je de föhn aanpassen aan jouw haartype. De vier meegeleverde opzetstukken, waaronder een diffuser en een flyaway-tamer, maken het mogelijk om verschillende stijlen te creëren.

Toepassing: drogen, gladmaken, krullen definiëren, pluizig haar temmen Bijgeleverde accessoires: smalle blaasmond, diffuser, flyaway-tamer, opbergtas Consumentenscore op Kieskeurig.nl: 8,4

Philips StyleCare Prestige BHB876/00

De Philips StyleCare Prestige BHB876/00 is een automatische krultang met een slimme krultechnologie die het haar automatisch oprolt en krult. Met drie temperatuurinstellingen (170°C, 190°C en 210°C), drie timerinstellingen (8s, 10s, 12s) en drie instelbare krulrichtingen kun je verschillende krulstijlen creëren, van losse golven tot strakke krullen - Philips zelf heeft het over 27 verschillende looks. De verticale grip en de langere cilinder maken het mogelijk om meer haar in één keer te stylen. De keratine-keramische coating beschermt het haar tegen hittebeschadiging.

Toepassing: automatisch krullen Bijgeleverde accessoires: staafreinigingsaccessoire Consumentenscore op Kieskeurig.nl: 8,6

Rowenta Infinite Looks 14-in-1 (CF4231)

De Rowenta Infinite Looks 14-in-1 is een alles-in-één multistyler die het mogelijk maakt om te krullen, stijlen, volume toe te voegen en meer. Met een conische krultang, een 32 mm ronde verwarmde borstel en een 2-in-1 stijltang/krimper kun je eindeloos variëren in haarstijlen. De keramische coating zorgt voor glad en glanzend haar. De set wordt geleverd met diverse accessoires, waaronder haarclips en een opbergtas, voor gebruiksgemak en veelzijdigheid.

Toepassing: krullen, stijlen, krimpen, volume toevoegen Bijgeleverde accessoires: conische krultang, ronde borstel, stijltang/krimper, haarclips, opbergtas Consumentenscore op Kieskeurig.nl: 9,3