[pyar] ¿Se puede cambiar el objeto list de python?

Alejandro Santos listas en alejolp.com
Lun Nov 8 22:14:26 ART 2010


2010/11/8 Hugo Ruscitti <hugoruscitti en gmail.com>:
>
> Básicamente quisiera tocar el código del objeto
> ``list`` para que entienda mensajes como este:
>
>    >> lista = [7, 6, 8]
>    >> lista.promedio()
>    7
>
> es decir, las listas entienden mensajes como ``insert``
> o ``append``, pero como estoy haciendo algo parecido a
> un framework tengo esta necesidad: ¿como puedo hacer para
> añadirle mis propios métodos al tipo ``list``?.
>
> Por cierto, por favor no me sugieran usar reduce, o algún
> algoritmo distinto, hacer un promedio es sencillo, ahí
> no radica el problema. Lo que necesito es modificar
> el comportamiento de las listas estándar de python. ¿Será
> que se puede hacer?.
>

Me voy a poner el sombrero de purista y, a riesgo de que se enojen
conmigo, modificar el comportamiento de una clase central del lenguaje
es algo que me pone un poco incómodo. Tiene sentido en proyectos como
Taint Mode de jjconti, pero en general no es una buena idea.

La idea de las herramientas que vienen integradas al lenguaje es que
hagan de puente entre diferentes librerias que puedas usar. De esa
forma no tenes que implementar tu propia lista cada vez que necesites
alguna secuencia ordenada de elementos de cualquier tipo.

Al agregar una función del estilo "promedio()" estás atando esa list()
a un contenido específico (números), y la lista ya deja de ser algo
genérico sino que pasa a ser una lista_de_numeros().

Con eso corrés el riesgo de romper cualquier abstracción que otros
puedan haber hecho sobre la list() de Python.

-- 
Alejandro Santos
http://alejolp.com.ar



More information about the pyar mailing list