Ver Mensaje Individual
  #9  
Antiguo 01-04-2011
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Reputación: 20
D-MO Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
Agrego: De lo que he leído, no me ha gustado que el método index de las listas eleve una excepción en lugar de devolver -1 o algo por el estilo. ¿Se puede crear una clase derivada de lista para añadirle un método "IndexOf" más amable? Y, derivado de esto, otra pregunta: ¿todos los métodos de Python son redefinibles, es decir, como los métodos virtuales de Delphi?
Con respecto a esto, si puedes sobreescribir un método o crear uno nuevo, lo que cambiará será la forma en que declares una lista, ya que con Python basta con que hagas algo como "a = [ ]" para decir que a es una lista, pero si creas una clase propia con este método entonces deberás decir que "a = myList()" previo a su uso y la clase myList deberá heredar de la clase list.

Un ejemplo de ello sería algo como:
Código:
class myList(list):
    
    def indexOf(self, value):
        try:
            return self.index(value)
        except ValueError:
            return -1
            

a = myList()

print a.indexOf('xxx')
También podrías sobreescribir el mismo método index, eso lo dejo de tarea

Saludos.

Edito:
Acá el como probarlo con ambos casos, exista o no el elemento en la lista

Código:
a = myList()
b = myList()
b.append('xxx')

print a.indexOf('xxx')
print b.indexOf('xxx')

Última edición por D-MO fecha: 02-04-2011 a las 00:02:43. Razón: Extendiendo las pruebas
Responder Con Cita