Implementierung eines unveränderlichen Wörterbuchs

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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 eingebauten dict-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

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/ObjectOrientedProgrammingGroup(["Object-Oriented Programming"]) python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python/DataStructuresGroup -.-> python/dictionaries("Dictionaries") python/ObjectOrientedProgrammingGroup -.-> python/classes_objects("Classes and Objects") python/ObjectOrientedProgrammingGroup -.-> python/inheritance("Inheritance") python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") python/ErrorandExceptionHandlingGroup -.-> python/raising_exceptions("Raising Exceptions") subgraph Lab Skills python/dictionaries -.-> lab-302737{{"Implementierung eines unveränderlichen Wörterbuchs"}} python/classes_objects -.-> lab-302737{{"Implementierung eines unveränderlichen Wörterbuchs"}} python/inheritance -.-> lab-302737{{"Implementierung eines unveränderlichen Wörterbuchs"}} python/catching_exceptions -.-> lab-302737{{"Implementierung eines unveränderlichen Wörterbuchs"}} python/raising_exceptions -.-> lab-302737{{"Implementierung eines unveränderlichen Wörterbuchs"}} end

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:

  1. Öffne die immutable_dict.py-Datei im Verzeichnis /home/labex/project.
  2. Erstelle eine neue Klasse namens ImmutableDict, die von der eingebauten dict-Klasse erbt.
class ImmutableDict(dict):
  1. 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.

  1. 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:

  1. Öffne die immutable_dict.py-Datei im Verzeichnis /home/labex/project.
  2. 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")=}')
  1. Speichere die immutable_dict.py-Datei.
  2. 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.

✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Übungen absolvieren, um deine Fähigkeiten zu verbessern.