##############################################################################
# Python From Scratch
# Autor: Nilo Ney Coutinho Menezes
# Editora Novatec (c) 2010-2024
# Site: https://pythonfromscratch.com
#
# File: listing\chapter 11\11.1510 - No Title.py
# Description: No Title
##############################################################################
class DBUniqueList(UniqueList):
def __init__(self, elem_class):
super().__init__(elem_class)
self.deleted = []
def remove(self, elem):
if elem.id is not None:
self.deleted.append(elem.id)
super().remove(elem)
def clean(self):
self.deleted = []
class DBName(Name):
def __init__(self, name, id_=None):
super().__init__(name)
self.id = id_
class DBTelephoneType(PhoneType):
def __init__(self, id_, type):
super().__init__(type)
self.id = id_
class DBTelephone(Telephone):
def __init__(self, number, type=None, id_=None, id_name=None):
super().__init__(number, type)
self.id = id_
self.id_name = id_name
class DBTelephones(DBUniqueList):
def __init__(self):
super().__init__(DBTelephone)
class DBTelephoneType(UniqueList):
def __init__(self):
super().__init__(DBTelephoneType)
class DBPhonebookData:
def __init__(self, name):
self.name = name
self.telephones = DBTelephones()
@property
def name(self):
return self.__name
@name.setter
def name(self, value):
if not isinstance(value, DBName):
raise TypeError("name must be an instance of the DBname class")
self.__name = value
def search_telephone(self, telephone):
position = self.telephones.search(DBTelephone(telephone))
if position == -1:
return None
else:
return self.telephones[position]