Classe que tira selfies
Implemente uma classe Selfie que possa armazenar o estado atual do objeto na forma de uma string binária. Ela pode tirar várias fotos e depois voltar a um estado anterior. Durante os testes, um objeto receberá novos atributos e seus valores. Ele armazenará seu estado. Em seguida, os valores serão alterados. Depois, ele receberá novos atributos. Ele armazenará seu estado novamente. Isso se repetirá algumas vezes.
Mais tarde, os estados do objeto serão recuperados a partir de um índice. O valor retornado deve ser um novo Selfie com o estado histórico solicitado, e o histórico de estados do novo objeto deve ser atualizado com uma cópia do histórico de estados do objeto atual.
O objeto também sabe quantos estados armazenou. Se o índice não estiver dentro do intervalo de estados armazenados, o objeto permanecerá como está. Se o argumento for inválido, n < 0 or n >= self.n_states(), o objeto atual (ou uma cópia dele) deverá ser retornado.
Exemplos
p = Selfie()
p.x = 2
p.save_state()
p.x = 5
p = p.recover_state(0)
p.x ➞ 2Observações
- Não é permitido usar variáveis globais fora da classe.
- Quando um objeto é restaurado para um estado anterior, ele mantém todos os estados salvos.