Cita:
Empezado por Al González
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')