„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Python-Trick: Die Magie von __slots__

Python-Trick: Die Magie von __slots__

Veröffentlicht am 02.11.2024
Durchsuche:869

Python Trick: The Magic of __slots__

Pythons Flexibilität mit dynamischen Attributen ist eine seiner Stärken, aber manchmal möchten Sie die Speichernutzung und Leistung optimieren.

Geben Sie slots ein, eine Funktion, die es Ihnen ermöglicht, einen festen Satz von Attributen für Ihre Klasse zu definieren, wodurch der Speicheraufwand reduziert und möglicherweise der Attributzugriff beschleunigt wird.


Wie es funktioniert

Normalerweise werden Python-Objekte als Wörterbücher zum Speichern von Attributen implementiert, was zu einem höheren Speicherverbrauch führen kann.

Indem Sie in Ihrer Klasse Slots definieren, weisen Sie Python an, eine speichereffizientere interne Struktur zu verwenden.

Dies ist besonders nützlich, wenn Sie die Attribute einer Klasse im Voraus kennen und den Aufwand eines vollständigen Wörterbuchs vermeiden möchten.

Hier ist eine Demonstration, wie man Slots verwendet:

class Point:
    __slots__ = ['x', 'y']  # Define the allowed attributes

    def __init__(self, x, y):
        self.x = x
        self.y = y


# Create a Point instance
p = Point(10, 20)

print(p.x)  # Output: 10
print(p.y)  # Output: 20

# Attempting to add a new attribute will raise an AttributeError
try:
    p.z = 30
except AttributeError as e:
    print(e)  # Output: 'Point' object has no attribute 'z'

# Output:
# 10
# 20
# 'Point' object has no attribute 'z'

In diesem Beispiel beschränkt slots die Point-Klasse nur auf die x- und y-Attribute.

Der Versuch, ein Attribut festzulegen, das nicht in Slots aufgeführt ist, führt zu einem AttributeError.


Warum es cool ist

Die Verwendung von Slots kann zu erheblichen Speichereinsparungen führen, insbesondere beim Erstellen einer großen Anzahl von Instanzen, indem der Overhead des Attributwörterbuchs entfällt.

Es kann auch die Geschwindigkeit des Attributzugriffs verbessern.

Seien Sie jedoch vorsichtig: Slots können einige dynamische Funktionen von Python-Objekten einschränken und sind möglicherweise nicht für alle Anwendungsfälle geeignet.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/devasservice/python-trick-the-magic-of-slots-578j?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3