En efecto, tienes la razón en el primer punto, explico:
Teniendo las dos opciones, a y b en los archivos a.py y b.py de la siguiente manera:
a.py
Código:
class myList(list):
def indexOf(self, value):
try:
return self.index(value)
except ValueError:
return None
x = myList()
print 'A:', x.indexOf('test')
b.py
Código:
class myList(list):
def indexOf(self, value):
if value in self:
return self.index(value)
else:
return None
x = myList()
print 'B:', x.indexOf('test')
Se obtiene como resultado lo siguiente:
Código:
~/tmp$ time python a.py
A: None
real 0m0.046s
user 0m0.028s
sys 0m0.000s
~/tmp$ time python b.py
B: None
real 0m0.033s
user 0m0.024s
sys 0m0.000s
Gracias por el aporte
Saludos.