Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Python

Maîtriser les __slots__ de classes Python : optimiser mémoire et vitesse

Maîtriser les __slots__ de classes Python : optimiser mémoire et vitesse

Les __slots__ de classes Python sont une fonctionnalité que peu de programmeurs connaissent. Dans une classe « slotted », on définit explicitement les champs autorisés via l'attribut magique __slots__. Avantages :

Exemple définition classe slotted :

>>> class Card:
...     __slots__ = 'rank', 'suite'
...     def __init__(self, rank, suite):
...         self.rank = rank
...         self.suite = suite
...
>>> qh = Card('queen', 'hearts')

Pour moi, le plus grand avantage : impossible d'ajouter attributs aléatoirement. Ça évite erreurs coûteuses ! Démonstration : faute de frappe en assignant attribut à classe slotted = erreur levée au lieu que Python crée silencieusement nouvel attribut.

Pour petites classes sans héritage complexe, slots = avantage. Surtout si beaucoup d'instances : économies mémoire et accès attributs plus rapide font différence.

Enfin, sachez qu'on peut combiner cette technique avec les classes de données (dataclasses) !

Python

  1. Maîtriser les types de données Python : Guide pratique
  2. Maîtriser les opérateurs Python : Guide complet
  3. Maîtriser l'instruction pass en Python : Guide pratique
  4. Maîtriser les arguments de fonctions Python : Positionnels, nommés et paramètres par défaut
  5. Maîtriser les dictionnaires Python : création, manipulation et techniques avancées
  6. Maîtriser les exceptions personnalisées Python : guide pratique
  7. Maîtriser la programmation orientée objet Python : classes, héritage, encapsulation et polymorphisme
  8. Maîtriser les itérateurs Python : fonctionnement et création des vôtres
  9. Les fermetures Python expliquées : comment les fonctions imbriquées capturent les variables