Einführung
In diesem Projekt lernst du, wie du ein unveränderliches Wörterbuch in Python implementierst. Ein unveränderliches Wörterbuch ist eine Datenstruktur, die nach ihrer Erstellung nicht mehr geändert werden kann, was in bestimmten Anwendungen nützlich ist, in denen die Daten unverändert bleiben müssen.
👀 Vorschau
d["Connection"]='kee-alive'
d["Host"]='www.labex.io'
TypeError("'ImmutableDict' Objekte sind unveränderlich")
TypeError("'ImmutableDict' Objekte sind unveränderlich")
d.get("Host")='www.labex.io'
🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Wie du eine
ImmutableDict-Klasse erstellst, die von der eingebautendict-Klasse erbt - Wie du Methoden in der
ImmutableDict-Klasse implementierst, um Änderungen am Wörterbuch zu verhindern - Wie du die
ImmutableDict-Klasse testest, um sicherzustellen, dass sie wie erwartet funktioniert
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- Den Begriff unveränderlicher Datenstrukturen und ihre Anwendungsfälle zu verstehen
- Ein unverändliches Wörterbuch in Python mit der
ImmutableDict-Klasse zu implementieren - Änderungen am Wörterbuch durch Überschreiben der entsprechenden Methoden zu verhindern
- Die
ImmutableDict-Klasse zu testen, um sicherzustellen, dass sie wie erwartet funktioniert
Implementierung der ImmutableDict-Klasse
In diesem Schritt lernst du, wie du die ImmutableDict-Klasse in der immutable_dict.py-Datei implementierst. Folge den Schritten unten, um diesen Schritt abzuschließen:
- Öffne die
immutable_dict.py-Datei im Verzeichnis/home/labex/project. - Erstelle eine neue Klasse namens
ImmutableDict, die von der eingebautendict-Klasse erbt.
class ImmutableDict(dict):
- Implementiere die folgenden Methoden in der
ImmutableDict-Klasse, um das Wörterbuch unveränderlich zu machen:
def __setitem__(self, key, value):
raise TypeError("'ImmutableDict' Objekte sind unveränderlich")
def __delitem__(self, key):
raise TypeError("'ImmutableDict' Objekte sind unveränderlich")
def pop(self, key, default=None):
raise TypeError("'ImmutableDict' Objekte sind unveränderlich")
def popitem(self):
raise TypeError("'ImmutableDict' Objekte sind unveränderlich")
def clear(self):
raise TypeError("'ImmutableDict' Objekte sind unveränderlich")
def update(self, *args, **kwargs):
raise TypeError("'ImmutableDict' Objekte sind unveränderlich")
def setdefault(self, key, default=None):
raise TypeError("'ImmutableDict' Objekte sind unveränderlich")
Diese Methoden überschreiben die entsprechenden Methoden in der dict-Klasse und werfen eine TypeError-Ausnahme, wenn versucht wird, das Wörterbuch zu ändern.
- Speichere die
immutable_dict.py-Datei.
Testen der ImmutableDict-Klasse
In diesem Schritt wirst du die ImmutableDict-Klasse testen, um sicherzustellen, dass sie wie erwartet funktioniert. Folge den Schritten unten, um diesen Schritt abzuschließen:
- Öffne die
immutable_dict.py-Datei im Verzeichnis/home/labex/project. - Füge den folgenden Code am Ende der Datei hinzu, um die
ImmutableDict-Klasse zu testen:
if __name__ == "__main__":
d = ImmutableDict(Connection="kee-alive", Host="www.labex.io")
print(f'{d["Connection"]=}')
print(f'{d["Host"]=}')
try:
d["Host"] = "test.com"
except TypeError as e:
print(repr(e))
try:
d.pop("Host")
except TypeError as e:
print(repr(e))
print(f'{d.get("Host")=}')
- Speichere die
immutable_dict.py-Datei. - Führe das
immutable_dict.py-Skript im Terminal aus:
python3 immutable_dict.py
Die Ausgabe sollte wie folgt sein:
d["Connection"]='kee-alive'
d["Host"]='www.labex.io'
TypeError("'ImmutableDict' Objekte sind unveränderlich")
TypeError("'ImmutableDict' Objekte sind unveränderlich")
d.get("Host")='www.labex.io'
Diese Ausgabe zeigt, dass die ImmutableDict-Klasse wie erwartet funktioniert und dass alle Versuche, das Wörterbuch zu ändern, eine TypeError-Ausnahme auslösen werden.
Herzlichen Glückwunsch! Du hast die ImmutableDict-Klasse erfolgreich implementiert und getestet. Du kannst nun diese Klasse in deinen Python-Anwendungen verwenden, um unveränderliche Datenstrukturen zu speichern.
Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Übungen absolvieren, um deine Fähigkeiten zu verbessern.



