Python Class Slots meistern: Speicher & Geschwindigkeit optimieren
Python Class Slots sind ein Feature, das nicht viele Programmierer kennen. In einer gesloteten Klasse definieren wir explizit die Felder, die unsere Klasse haben darf, mittels des magischen Feldnamens __slots__. Das hat Vorteile:
- Objekte der Klasse belegen etwas weniger Speicher
- Zugriff auf Klassenattribute ist schneller
- Man kann Objekte einer gesloteten Klasse nicht willkürlich neue Attribute hinzufügen
Beispiel für eine geslotete Klasse:
>>> class Card:
... __slots__ = 'rank', 'suite'
... def __init__(self, rank, suite):
... self.rank = rank
... self.suite = suite
...
>>> qh = Card('queen', 'hearts')
Für mich ist der größte Vorteil: Man kann einer gesloteten Klasse nicht willkürlich neue Attribute hinzufügen. Das verhindert teure Fehler! Zur Demonstration: Ein Tippfehler beim Zuweisen eines Attributs an eine geslotete Klasse wirft einen Fehler, statt dass Python stillschweigend ein neues Attribut erstellt.
Für kleine Klassen ohne komplexe Vererbung kann die Nutzung von Slots vorteilhaft sein. Besonders wenn Sie viele Instanzen einer solchen Klasse erstellen, können Speichereinsparungen und schnellerer Attributzugriff einen Unterschied machen.
Abschließend: Sie können diese Technik auch mit Data Classes kombinieren!
Python
- Python-Datentypen meistern: Praxisleitfaden
- Python-Operatoren meistern: Umfassender Leitfaden
- Python pass-Statement meistern: Praxisleitfaden
- Python-Funktionsargumente meistern: Positional, Keyword & Default-Parameter
- Python-Dictionaries meistern: Erstellung, Manipulation und fortgeschrittene Techniken
- Python benutzerdefinierte Exceptions: Ein praktischer Leitfaden
- Python Objektorientierte Programmierung meistern: Klassen, Vererbung, Kapselung & Polymorphie
- Python Iteratoren meistern: Funktionsweise und Erstellung eigener Iteratoren
- Python Closures erklärt: Wie verschachtelte Funktionen Variablen erfassen
- Python datetime meistern: Praktischer Leitfaden zu Datumsangaben, Zeiten und Zeitzonen