Implementando um Dicionário Imutável

PythonBeginner
Pratique Agora

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 ImmutableDict que herda da classe dict embutida
  • Como implementar métodos na classe ImmutableDict para impedir modificações no dicionário
  • Como testar a classe ImmutableDict para 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 ImmutableDict para 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:

  1. Abra o arquivo immutable_dict.py localizado no diretório /home/labex/project.
  2. Crie uma nova classe chamada ImmutableDict que herda da classe dict embutida.
class ImmutableDict(dict):
  1. Implemente os seguintes métodos na classe ImmutableDict para 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.

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

  1. Abra o arquivo immutable_dict.py no diretório /home/labex/project.
  2. 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")=}')
  1. Salve o arquivo immutable_dict.py.
  2. Execute o script immutable_dict.py no 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.

✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar