ID.nl logo
Zo kun je programmeren in Python - deel 8
© Reshift Digital
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
Waar voor je geld: 5 sfeervolle slimme verlichtingssets
© Signify
Zekerheid & gemak

Waar voor je geld: 5 sfeervolle slimme verlichtingssets

Bij ID.nl zijn we dol op kwaliteitsproducten waar je niet de hoofdprijs voor betaalt. Een paar keer per week speuren we binnen een bepaald thema naar zulke deals. Ben je op zoek naar betaalbare slimme verlichting voor jouw woonkamer of tuin? Vandaag hebben we vijf interessante modellen voor je gespot.

Philips Hue White and Color Ambiance Festavia

Met dit slimme lichtsnoer van twintig meter kun je een tuin of kamer sfeervol verlichten. Vanuit de Philips Hue-app stuur je de 250 leds aan. Bepaal welke kleuren en scènes je wilt weergeven, waarbij je fraaie tinten in elkaar laat overlopen. Pas verder het dimniveau en de helderheid aan. Dankzij de lengte creëer je opvallende effecten op de gevel of binnenmuur. Daarnaast hang je het snoer net zo makkelijk in een flinke kerstboom. De zwarte kabel valt in dat geval niet op. De configuratie is niet moeilijk, want het verlichtingssysteem communiceert via bluetooth rechtstreeks met een smartphone.

Je kunt de Philips Hue White and Color Ambiance Festavia ook op een geschikte bridge aansluiten. Dat heeft als voordeel dat je de lampjes overal op afstand kunt bedienen. Bovendien laat je de lampjes eventueel met andere slimme apparaten samenwerken. Je gebruikt de lichtslinger zowel binnen als buiten, want de leds zijn weerbestendig. Naast deze uitvoering van twintig meter is er tegen een meerprijs ook een lichtslinger van veertig meter (500 leds) te koop.

Philips Hue White GU10 (2-pack)

Deze slimme spotjes zijn een goed alternatief voor 'domme' ledspots of energieslurpende halogeenlampjes. Ze passen in een standaard GU10-fitting, waardoor je alle oude ledspots een-op-een kunt vervangen. Zeker wanneer je meerdere lampjes combineert, is de opbrengst van 400 lumen per stuk behoorlijk fel. De kleurtemperatuur voor wittinten loopt tot 2700 kelvin. Deze lamp ondersteunt geen kleurenweergave.

De Philips Hue White GU10 communiceert via bluetooth met de Philips Hue-app op je smartphone. Selecteer vervolgens de gewenste helderheid of kies een mooie lichtscène. Zo bevat de app schema's die je helpen om je beter te concentreren of te relaxen. Houd er wel rekening mee dat het bereik van bluetooth beperkt is. Als je de slimme ledspots alsnog vanaf elke plek wilt bedienen, kun je de Philips Hue Bridge overwegen. Hierop sluit je tot vijftig geschikte lampen aan. Je hebt dan ook toegang tot meer functies, zoals geofencing. Kom je 's avonds bijvoorbeeld laat thuis, dan springen de ledspots vanzelf aan.

WiZ A60 (2-pack)

Gebruik deze betaalbare verlichtingsset voor bestaande lampen. Je draait de E27-fitting gewoon in de armatuur van bijvoorbeeld een vloer-, bureau- of tafellamp. Via de WiZ Connected-app verbind je beide peertjes rechtstreeks met jouw wifi-netwerk. Het gebruik van een bridge is dus niet nodig, terwijl je de lampen vanaf overal ter wereld kunt bedienen. Is er geen draadloos netwerk beschikbaar? Geen probleem, want als alternatief stuur je ze via een bluetooth-verbinding aan.

In de app kies je tussen zo'n zestien miljoen kleuren, al kun je ook een warme wittint selecteren. Ook kun je effecten en routines instellen. De lichtsterkte van 806 lumen is voor een doorsnee (woon)kamer ruimschoots voldoende. Nuttig om te weten is dat dit WiZ-product met verschillende smarthomeplatformen overweg kan, waaronder Google Home en Apple HomeKit. Je schaft de twee E27-lampen tegen een kleine meerprijs eventueel inclusief afstandsbediening aan. Hiermee switch je eenvoudig tussen vier vooraf geprogrammeerde scènes en dim de verlichting.

Lees ook: 10 vragen over slimme verlichting

Twinkly Light Tree 3D

Deze lichtgevende kerstboom maakt van jouw tuin een heuse bezienswaardigheid. Met een mast en haringen zet je de slinger met 750(!) ledlampjes stevig vast. Prik vervolgens de bijgesloten stekker in het stopcontact om deze vier meter hoge kerstboom te verlichten. Je kunt als alternatief ook een uitvoering van drie meter of zelfs zes meter kopen. Het product voldoet aan de eisen van de IP44-norm en kan een spatje regen dus prima verdragen.

Zodra de mast eenmaal staat, gebruik je de Twinkly-app op je smartphone om de verlichting te configureren. Dat werkt via een rechtstreekse bluetooth- of wifiverbinding. Je hebt hierbij keuze tussen alle kleuren van de regenboog, maar je kunt desgewenst ook voor warm wit licht kiezen. In de app staan er tientallen fraaie (knipperende) lichteffecten voor je klaar. Bovendien creëer je eventueel ook eigen effecten. Vind je de lampjes te fel, dan verlaag je de helderheid ervan. Stel verder een tijdschema in. Een leuke optie is dat de Light Tree 3D optioneel met andere Twinkly-verlichtingssystemen samenwerkt.

TP-Link Tapo L630 (4-pack)

Voeg met dit prijsvriendelijke 4-pack in één klap kleurenverlichting toe aan bijvoorbeeld je plafond of keuken. Wie niet zoveel lampjes nodig heeft, kan ook een 2-pack overwegen. De TP-Link Tapo L630 heeft een gangbare GU10-fitting, waardoor je oude spotjes in huis eenvoudig kunt vervangen. In de behuizing bevindt zich een wifi-adapter. Hierdoor verbind je de lampen rechtstreeks met het draadloze thuisnetwerk. In tegenstelling tot veel andere slimme verlichtingssystemen heb je dus geen bridge of basisstation nodig.

De kleurtemperatuur loopt van 2200 tot 6500 kelvin, zodat je volop kunt variëren tussen koele en warme wittinten. Verder stel je net zo makkelijk een vrolijk kleurtje in, want je hebt keuze tussen zestien miljoen kleuren. De GU10-spotjes ondersteunen een behoorlijke lichtsterkte van maximaal 350 lumen, maar je kunt ze naar behoefte dimmen. Handig is dat je in de TP-Link Tapo-app desgewenst diverse schema's instelt. Op die manier springt de verlichting 's avonds vanzelf aan. Het is zelfs mogelijk om de lampen af te stemmen op de zonsopgang en -ondergang. Even geen smartphone bij de hand? Geen probleem, want je bedient de Tapo L630 net zo makkelijk met je stem. Dat werkt via Amazon Alexa of Google Assistent.

▼ Volgende artikel
Sinterklaasje, kom maar binnen met je… airfryer! Snelle feesthapjes voor pakjesavond en kerst
© ID.nl
Huis

Sinterklaasje, kom maar binnen met je… airfryer! Snelle feesthapjes voor pakjesavond en kerst

In de drukke decembermaand wil je iets lekkers op tafel zetten, maar liever niet de hele middag in de keuken staan. De airfryer is dan je beste hulp: één apparaat waarmee je supersnel allerlei snacks en lekkernijen maakt, zonder dat de keuken ontploft. Van kruidnoten tot bladerdeegsterren en mini-kaaskroketjes: fijne feestdagen!

Dit gaan we doen:

In dit artikel vind je ideeën voor zoete en hartige tussendoortjes uit de airfryer, perfect voor pakjesavond, kerst of oud en nieuw. We laten zien hoe je hapjes snel bereidt, hoe je zorgt dat alles krokant wordt en hoe je met een beetje creativiteit een complete feesttafel vult.

Lees ook: Nou dát is handig: ontdek de verborgen talenten van je airfryer!

Kleine hapjes, groot gemak

Wie denkt dat de airfryer alleen geschikt is voor friet en kroketten, heeft het mis. Met bladerdeeg, een beetje creativiteit en wat basis-­ingrediënten maak je in korte tijd verrassend veel verschillende gerechtjes. Denk aan mini-saucijzenbroodjes, bladerdeeghapjes met brie en cranberry of kleine pizzarondjes met tomaat en mozzarella.

Extra krokant

De meeste hapjes worden vanzelf krokant door de hete lucht. Is iets te droog, spray dan een klein beetje olie met een verstuiver over het eten. Daarmee gebruik je minder olie dan wanneer je het eten zou bestrijken – terwijl je wel hetzelfde knapperige resultaat hebt.

Recept: kruidnoten uit de airfryer

Zelf kruidnoten maken is leuk en makkelijk. Extra bonus: heel je huis ruikt meteen naar Sinterklaas! Meng 250 gram zelfrijzend bakmeel met 125 gram bruine basterdsuiker, twee theelepels speculaaskruiden, een snuf zout, 150 gram roomboter(ongezouten) in blokjes en vier eetlepels melk. Kneed tot een soepel deeg, rol er kleine bolletjes van en leg die met wat tussenruimte in het mandje van de airfryer. Bak ze in circa 10 tot 12 minuten op 180 graden goudbruin. Schud halverwege even met de mand zodat ze rondom gelijk kleuren. Laat de kruidnoten daarna volledig afkoelen; dan worden ze knapperig.

Wil je er chocoladekruidnoten van maken, smelt dan pure, melk- of witte chocolade au bain-marie. Haal de afgekoelde kruidnoten door de gesmolten chocolade, leg ze op bakpapier en laat ze uitharden. Een uurtje in de koelkast is voldoende.

©ID.nl

Nog meer lekkers voor wie (van) zoet is

Nog meer zoete trek?De airfryer is je beste vriend. Je kunt er mini-appelflappen in bakken, kleine kaneelbroodjes of plakjes appel met kaneel en een beetje honing. Het bakt snel en de suiker karamelliseert mooi zonder dat je extra boter nodig hebt. Voor een feestelijke touch kun je wat poedersuiker of gesmolten chocolade toevoegen zodra deze zoete hapjes uit de mand komen.

Wie het makkelijk wil houden, gebruikt kant-en-klaar deeg of koekjesdeeg: rol kleine balletjes, leg ze in de airfryer en bak ze een paar minuten tot ze goudbruin zijn. Ideaal als snelle zoete traktatie bij de koffie of als dessertje na het eten.

Recept: bladerdeegsterren met kerstige vullingen

Bladerdeegsterren zien er feestelijk uit en zijn eenvoudig te maken. Snijd vierkante plakjes bladerdeeg diagonaal in om de punten te vormen, vouw de hoeken om en druk het midden iets in met een lepel zodat er na het bakken een klein 'bakje' ontstaat. Bak de sterren in de airfryer op 180 graden gedurende 8 tot 10 minuten tot ze goudbruin en luchtig zijn. Laat ze even afkoelen voordat je ze vult.

Drie combinaties die goed werken: 🧀 brie met cranberry en walnoot, 🐟 zalm met roomkaas en dille, of 🐐 geitenkaas met honing en tijm. Schep de vulling in het midden, garneer eventueel met wat rucola of peterselie en serveer ze warm of lauw. Op een rooster blijven ze het langst krokant. Tip: je kunt de brie of geitenkaas ook een paar minuten voor het einde van de baktijd toevoegen. De kaas smelt dan een beetje, wat extra lekker is.

©ID.nl

Hapjes warmhouden in de airfryer

De airfryer houdt hapjes goed warm als je de temperatuur laag zet. Kies 80 graden zodat ze niet verder bruin worden of uitdrogen. Laat de hapjes in één laag in het mandje liggen, dan blijft de luchtstroom gelijkmatig. Beperk de tijd tot ongeveer twintig minuten, want daarna worden ze merkbaar minder knapperig. Werk je in rondes, warm dan de volgende portie pas op wanneer de vorige bijna geserveerd wordt. Hierdoor blijft alles zo vers mogelijk.

Recept: mini-kaaskroketjes voor oud en nieuw

Ook voor oudejaarsavond is de airfryer een uitkomst. Mini-kaaskroketjes worden er precies goed in: knapperig van buiten en romig van binnen. Je kunt een kant-en-klare diepvriesvariant gebruiken, maar zelf maken kan ook. Dat kost wel wat meer tijd. Begin een dag van tevoren. Maak een dikke kaassaus door boter te smelten op matig vuur, bloem erdoor te roeren en geleidelijk melk toe te voegen terwijl je blijft roeren. Laat de saus binden, roer er geraspte oude kaas doorheen tot die gesmolten is en breng op smaak. Laat de massa volledig afkoelen en zet minimaal 4 uur (of een nacht) in de koelkast. Rol de volgende dag kleine balletjes of rolletjes van het afgekoelde mengsel, haal ze achtereenvolgens door bloem, eigeel en paneermeel en bak ze in de airfryer op 200 graden in ongeveer 7 minuten goudbruin. Serveer ze met mosterd of een pittige dipsaus.

©ID.nl

Je ideale keukenhulp voor de feestdagen

De airfryer bewijst in december zijn waarde. Je maakt er zonder moeite hapjes mee voor elk moment, van sinterklaasavond tot oud en nieuw. Of het nu gaat om kruidnoten, bladerdeegsterren of kaaskroketjes: met de airfryer is het zo gepiept. Zo blijft er genoeg tijd over voor wat écht belangrijk is: gezelligheid aan tafel.

🎯 Populairste merken airfryer in NL

Philips
Aanrader: Philips 3000 Series NA352/00 Airfryer 9 L Dual Basket. Dubbele mand en ruime inhoud, geschikt voor gezinnen of grotere porties. Reviewscore op Kieskeurig: 8,2.

Tefal
Aanrader: Tefal Dual Easy Fry & Grill EY905D 8.3L XXL Airfryer. Ruim model met twee lades, geschikt voor grotere porties of volledige maaltijden. Reviewscore op Kieskeurig: 8,8.

Inventum
Aanrader: Inventum GF500HLD Airfryer. Betaalbare instapper; handig voor kleinere huishoudens. Reviewscore op Kieskeurig: 9,2.

Princess
Aanrader: Princess Double Basket Airfryer - 8L - 2400W. Dubbele airfryer met twee manden van 4 liter. Meer dan genoeg capaciteit voor een gezin. Reviewscore op Kieskeurig: 8,5.

Ninja
Aanrader: Ninja Airfryer XXL Max Pro. Geschikt voor 3-4 personen. Gelijkmatige resultaten bij friet, groenten en vlees. Dankzij de hogere stand wordt alles extra knapperig. Reviewscore op Kieskeurig: 9,6.

🔟 Over de reviewscores op Kieskeurig.nl
Op Kieskeurig.nl schrijven consumenten reviews over producten. Bij de beoordeling zie je niet alleen het gemiddelde cijfer, maar ook hoeveel reviews er zijn geschreven. Zo krijg je meteen een indruk of de score op basis van één enkele review is of op basis van veel gebruikerservaringen.

🎄 Maak het extra feestelijk

Het mooiste kerstservies