Bienvenido al foro
mirkodrpic:
En esta caso te recomiendo varias cosas:
1.- No definir métodos get y set si tus miembros de clase son públicos.
2.- Para este problema te recomendaría usar un diccionario en lugar de un vector.
Ahora bien cabe aclarar las diferencias entre vector y list:
Un vector es un arreglo que puede crecer esto significa memoria contigua.
En cambio una lista es una estructura de datos y por lo tanto no garantiza memoria contigua.
Ambos tienen sus ventajas y desventajas, pero para una cantidad inmensa de datos es mejor una lista.
Como puedes ver en la
documentación de python existen muchos métodos para manejar listas.
Haciendo que el trabajo de agregar, borrar y buscar se reduscan simplemente a funciones tales como append, remove e index.
Ahora bien cuando tenemos una lista de datos "primitivos" (recordemos que en python todo son objetos) no tenemos problemas al trabajar con estos objetos por que tienen los metodos muy bien definidos. En cambio cuando hacemos nuestra clase tenemos que definir esos metodos.
Aquí un ejemplo, perdón por el derroche de creatividad para los datos.
Código Python:
Ver original#Esta es la clase libro
class Book:
def __init__(self, idbook, title, author, edition, editorial):
self.idbook = idbook
self.title = title
self.author = author
self.edition = edition
self.editorial = editorial
def __str__(self):
return self.idbook
def __eq__(self, y):
if self.idbook == y:
return True
return False
#Vamos a definir unas cuantas funciones
#Como añadir libros
def add_book(book_list, book):
book_list.append(book)
print "Añadido %s exitosamente" % book.idbook
#Busca libro SOLO por id
def search_book(book_list, book_id):
try:
index = book_list.index(book_id)
print "%s esta en el registro %d" % (book_id, index)
except ValueError:
print "%s NO esta en el registro" % book_id
#Borra libro por id
def delete_book(book_list, book_id):
try:
book_list.remove(book_id)
print "%s se ha borrado exitosamente" % book_id
except ValueError:
print "%s NO esta en el registro" % book_id
l = []
add_book(l, Book("001", "Titulo1", "Autor1", "Edicion1", "Editorial1") )
add_book(l, Book("002", "Titulo2", "Autor2", "Edicion2", "Editorial2") )
add_book(l, Book("003", "Titulo3", "Autor3", "Edicion3", "Editorial3") )
add_book(l, Book("004", "Titulo4", "Autor4", "Edicion4", "Editorial4") )
add_book(l, Book("005", "Titulo5", "Autor5", "Edicion5", "Editorial5") )
search_book(l, "005")
search_book(l, "000")
delete_book(l, "004")
delete_book(l, "004")
Si modificamos el método __eq__ podemos hacer búsquedas y remover libros de la lista ya sea por edición, titulo, autor, etc...