Lista 11-29: Nuevas clases – lista parcial

##############################################################################
# Parte del libro Introducción a la programación con Python
# Autor: Nilo Ney Coutinho Menezes
# Editora Novatec (c) 2015 - ISBN 978-85-7522-250-8
# Primera edición - Mayo/2016
# Sitio: http://www.librodepython.com
#
# Archivo: lista\capítulo 11\11.29 - Nuevas clases – lista parcial.py
# Descripción: Nuevas clases – lista parcial
##############################################################################


class DBListaÚnica(ListaÚnica):
    def __init__(self, elem_class):
        super().__init__(elem_class)
        self.borrados = []

    def remove(self, elem):
        if elem.id is not None:
            self.borrados.append(elem.id)
            super().remove(elem)

    def limpia(self):
        self.borrados = []


class DBNome(Nombre):
    def __init__(self, nombre, id_=None):
        super().__init__(nombre)
        self.id = id_


class DBTipoTeléfono(TipoTeléfono):
    def __init__(self, id_, tipo):
        super().__init__(tipo)
        self.id = id_


class DBTeléfono(Teléfono):
    def __init__(self, número, tipo=None, id_=None, id_nombre=None):
        super().__init__(número, tipo)
        self.id = id_
        self.id_nombre = id_nombre


class DBTeléfonos(DBListaÚnica):
    def __init__(self):
        super().__init__(DBTeléfono)


class DBTiposTeléfono(ListaÚnica):
    def __init__(self):
        super().__init__(DBTipoTeléfono)


class DBDadoAgenda:
    def __init__(self, nombre):
        self.nombre = nombre
        self.teléfonos = DBTeléfonos()

    @property
    def nombre(self):
        return self.__nombre

    @nombre.setter
    def nombre(self, valor):
        if type(valor) != DBNome:
            raise TypeError("nombre debe ser una instancia de la clase DBNome")
        self.__nombre = valor

    def investigaciónTeléfono(self, teléfono):
        posición = self.teléfonos.investigación(DBTeléfono(teléfono))
        if posición == -1:
            return None
        else:
            return self.teléfonos[posición]
Haga clic aquí para bajar el archivo