Verwendung von __Slots__?
__slots__
ist eine Möglichkeit, einen festen Satz von Attributen für eine Klasse anzugeben, die dazu beitragen kann, Speicherplatz in bestimmten Situationen zu sparen. Anstatt für jine Instanz ein dynamisches Wörterbuch zur Speicherung der Attribute zu haben, haben Instanzen einer Klasse mit definierten __slots__
nur Platz für die in __slots__
aufgelisteten Attribute allokiert. Das kann nützlich sein, wenn Sie eine große Anzahl von Instanzen haben und Speicherplatz sparen möchten.
Hier ist ein Beispiel für eine Klasse, die __slots__
verwendet:
class MyClass:
__slots__ = ['a', 'b']
def __init__(self, a, b):
self.a = a
self.b = b
obj = MyClass(1, 2)
print(obj.a) # 1
print(obj.b) # 2
In diesem Beispiel verwendet MyClass
__slots__
, um anzugeben, dass Instanzen der Klasse nur Platz für die Attribute a
und b
allokiert haben sollen. Wenn man versucht, ein Attribut, das nicht in slots ist, festzulegen, wird ein AttributeError ausgelöst.
obj.c = 3 # AttributeError: 'MyClass' object has no attribute 'c'
Beachten Sie, dass __slots__
nur den Speicherverbrauch von Instanzen der Klasse und nicht die Klasse selbst beeinflusst. Es deaktiviert auch die Erstellung von Instanzwörterbuch, so dass Sie keine neuen Attribute zu den Klasseninstanzen hinzufügen können, nachdem sie erstellt wurden.