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...