Introdução
Neste projeto, você aprenderá como implementar um dicionário imutável em Python. Um dicionário imutável é uma estrutura de dados que não pode ser modificada após sua criação, o que é útil em certas aplicações onde os dados precisam permanecer inalterados.
👀 Pré-visualização
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'
🎯 Tarefas
Neste projeto, você aprenderá:
- Como criar uma classe
ImmutableDictque herda da classedictembutida - Como implementar métodos na classe
ImmutableDictpara impedir modificações no dicionário - Como testar a classe
ImmutableDictpara garantir que ela se comporte como esperado
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Compreender o conceito de estruturas de dados imutáveis e seus casos de uso
- Implementar um dicionário imutável em Python usando a classe
ImmutableDict - Impedir modificações no dicionário, substituindo os métodos apropriados
- Testar a classe
ImmutableDictpara garantir que ela funcione como esperado
Implementando a Classe ImmutableDict
Nesta etapa, você aprenderá como implementar a classe ImmutableDict no arquivo immutable_dict.py. Siga os passos abaixo para concluir esta etapa:
- Abra o arquivo
immutable_dict.pylocalizado no diretório/home/labex/project. - Crie uma nova classe chamada
ImmutableDictque herda da classedictembutida.
class ImmutableDict(dict):
- Implemente os seguintes métodos na classe
ImmutableDictpara tornar o dicionário imutável:
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")
Esses métodos substituem os métodos correspondentes na classe dict e lançam uma exceção TypeError sempre que uma tentativa é feita para modificar o dicionário.
- Salve o arquivo
immutable_dict.py.
Testando a Classe ImmutableDict
Nesta etapa, você testará a classe ImmutableDict para garantir que ela se comporte como esperado. Siga os passos abaixo para concluir esta etapa:
- Abra o arquivo
immutable_dict.pyno diretório/home/labex/project. - Adicione o seguinte código no final do arquivo para testar a classe
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")=}')
- Salve o arquivo
immutable_dict.py. - Execute o script
immutable_dict.pyno terminal:
python3 immutable_dict.py
A saída deve 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 saída demonstra que a classe ImmutableDict se comporta como esperado, e quaisquer tentativas de modificar o dicionário lançarão uma exceção TypeError.
Parabéns! Você implementou com sucesso a classe ImmutableDict e a testou. Agora você pode usar esta classe em suas aplicações Python para armazenar estruturas de dados imutáveis.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



