Python class __slots__ meesteren: geheugen & snelheid optimaliseren

Python class slots zijn een functie die niet veel programmeurs kennen. In een geslotten klasse definiëren we expliciet de velden die onze klasse mag hebben met behulp van de magische veldnaam __slots__. Dit heeft enkele voordelen:
- Objecten die van de klasse worden aangemaakt, nemen iets minder geheugen in beslag
- Het is sneller om klasse-attributen te benaderen
- U kunt niet zomaar nieuwe attributen toevoegen aan objecten van een geslotten klasse
Hier is een voorbeeld van hoe u een geslotten klasse definieert:
>>> class Card:
... __slots__ = 'rank', 'suite'
... def __init__(self, rank, suite):
... self.rank = rank
... self.suite = suite
...
>>> qh = Card('queen', 'hearts')
Voor mij is het grootste voordeel dat u niet zomaar nieuwe attributen aan een geslotten klasse kunt toevoegen. Het kan kostbare fouten voorkomen! Om te demonstreren: een typfout bij het toewijzen van een attribuut aan een geslotten klasse gooit een fout in plaats van dat Python stilzwijgend een nieuw attribuut aanmaakt.
Voor kleine klassen zonder complexe erfenis, kan het gebruik van slots een voordeel zijn. Vooral als u veel instanties van zo'n klasse moet aanmaken, kan de besparing in geheugen en snellere attribuuttoegang een verschil maken.
Ten slotte, gewoon om te weten, u kunt deze techniek ook combineren met data classes!
Python
- Python Datatypes onder de knie krijgen: Een praktische gids
- Python Operators onder de knie krijgen: Een uitgebreide gids
- Python Pass Statement onder de knie krijgen: Een praktische gids
- Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
- Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
- Python-custom exceptions: een praktische gids
- Python Object-Oriented Programming beheersen: classes, inheritance, encapsulatie & polymorfisme
- Python-erfelijkheid beheersen: concepten, syntax en praktische voorbeelden
- Python-iterators: hoe ze werken en hoe je je eigen maakt
- Python-closures uitgelegd: hoe geneste functies variabelen vangen
- Python datetime beheersen: praktische gids voor datums, tijden en tijdzones