Modifique a classe ListaÚnica para sobrescrever o método extend de UserList. extend funciona como o append, mas recebe uma lista como parâmetro. Verifique o tipo de cada elemento na lista antes de adicioná-lo à lista.
Resposta:
##############################################################################
# Parte do livro Introdução à Programação com Python
# Autor: Nilo Ney Coutinho Menezes
# Editora Novatec (c) 2010-2024
# Quarta Edição - Março/2024 - ISBN 978-85-7522-886-9
#
# Site: https://python.nilo.pro.br/
#
# Arquivo: capitulo 10/exercicio-10-15.py
##############################################################################
from collections import UserList
class ListaÚnica(UserList):
def __init__(self, elem_classe, enumerable=None):
super().__init__(enumerable)
self.elem_classe = elem_classe
def append(self, elem):
self.verifica_tipo(elem)
if elem not in self.data:
super().append(elem)
def extend(self, iteravel):
for elem in iteravel:
self.append(elem)
def __setitem__(self, posição, elem):
self.verifica_tipo(elem)
if elem not in self.data:
super().__setitem__(posição, elem)
def verifica_tipo(self, elem):
if not isinstance(elem, self.elem_classe):
raise TypeError("Tipo inválido")