Introducción
En este proyecto, aprenderás cómo implementar un diccionario inmutable en Python. Un diccionario inmutable es una estructura de datos que no se puede modificar una vez creada, lo cual es útil en ciertas aplicaciones donde los datos deben permanecer inalterados.
👀 Vista previa
d["Connection"]='kee-alive'
d["Host"]='www.labex.io'
TypeError("'ImmutableDict' objects are immutable")
TypeError("'ImmutableDict' objects are immutable")
d.get("Host")='www.labex.io'
🎯 Tareas
En este proyecto, aprenderás:
- Cómo crear una clase
ImmutableDictque herede de la clasedictincorporada - Cómo implementar métodos en la clase
ImmutableDictpara evitar modificaciones al diccionario - Cómo probar la clase
ImmutableDictpara asegurarse de que se comporta como se espera
🏆 Logros
Después de completar este proyecto, podrás:
- Comprender el concepto de estructuras de datos inmutables y sus casos de uso
- Implementar un diccionario inmutable en Python utilizando la clase
ImmutableDict - Evitar modificaciones al diccionario sobrescribiendo los métodos adecuados
- Probar la clase
ImmutableDictpara asegurarse de que funciona como se espera
Implementar la clase ImmutableDict
En este paso, aprenderás cómo implementar la clase ImmutableDict en el archivo immutable_dict.py. Siga los pasos siguientes para completar este paso:
- Abra el archivo
immutable_dict.pyubicado en el directorio/home/labex/project. - Cree una nueva clase llamada
ImmutableDictque herede de la clasedictincorporada.
class ImmutableDict(dict):
- Implemente los siguientes métodos en la clase
ImmutableDictpara hacer que el diccionario sea inmutable:
def __setitem__(self, key, value):
raise TypeError("'ImmutableDict' objects are immutable")
def __delitem__(self, key):
raise TypeError("'ImmutableDict' objects are immutable")
def pop(self, key, default=None):
raise TypeError("'ImmutableDict' objects are immutable")
def popitem(self):
raise TypeError("'ImmutableDict' objects are immutable")
def clear(self):
raise TypeError("'ImmutableDict' objects are immutable")
def update(self, *args, **kwargs):
raise TypeError("'ImmutableDict' objects are immutable")
def setdefault(self, key, default=None):
raise TypeError("'ImmutableDict' objects are immutable")
Estos métodos sobrescriben los métodos correspondientes en la clase dict y generan una excepción TypeError cada vez que se intenta modificar el diccionario.
- Guarde el archivo
immutable_dict.py.
Probando la clase ImmutableDict
En este paso, probarás la clase ImmutableDict para asegurarte de que se comporte como se espera. Sigue los pasos siguientes para completar este paso:
- Abre el archivo
immutable_dict.pyen el directorio/home/labex/project. - Agrega el siguiente código al final del archivo para probar la clase
ImmutableDict:
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")=}')
- Guarda el archivo
immutable_dict.py. - Ejecuta el script
immutable_dict.pyen la terminal:
python3 immutable_dict.py
La salida debe ser:
d["Connection"]='kee-alive'
d["Host"]='www.labex.io'
TypeError("'ImmutableDict' objects are immutable")
TypeError("'ImmutableDict' objects are immutable")
d.get("Host")='www.labex.io'
Esta salida demuestra que la clase ImmutableDict se comporta como se espera, y cualquier intento de modificar el diccionario generará una excepción TypeError.
¡Felicitaciones! Has implementado con éxito la clase ImmutableDict y la has probado. Ahora puedes usar esta clase en tus aplicaciones de Python para almacenar estructuras de datos inmutables.
Resumen
¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.



