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

Mariano Guerra luismarianoguerra en gmail.com
Lun Nov 8 12:32:21 ART 2010


2010/11/8 Hugo Ruscitti <hugoruscitti en gmail.com>:
> 2010/11/8 Roberto Alsina <ralsina en netmanagers.com.ar>:
>> On Monday 08 November 2010 11:29:10 Hugo Ruscitti wrote:
>>> Saludos, quería consultarles si es posible personalizar
>>> el uso de la listas en python. Entiendo que python
>>> instancia un objeto llamado __builtin__.list cada
>>> vez que se construye una lista usando corchetes, por
>>> ejemplo:
>>>
>>>     lista = [objeto1, objeto2]
>>>
>>> y me gustaría que ese objeto ``lista`` pueda entender
>>> otros mensajes personalizados por mí. Por lo tanto
>>> se me ocurrió que python, siendo dinámico, me tendría
>>> que dejar hacerlo tocando la clase ``list`` de
>>> donde viene la lista...
>>
>> Me parece que no podés tocar list en sí mismo, pero hacer una clase "lista"
>> que herede list y hace lo que vos querés es trivial...
>>
>>>>> class lista(list):
>> ...     def promedio(self):
>> ...         return (sum(self)+.0)/len(self)
>>>>> l=lista([1,2,3,4])
>>>>> l.promedio()
>> 2.5
>
> uh. me temía eso, que no se pudiera... la verdad es que me gustaría la
> opción 1 de cambiar el comportamiento de las listas, porque me parece
> mas intuitivo para los usuarios usar las listas como si fueran listas
> estándar de python y no un objeto de mi dominio... al menos dentro
> de este framework que estoy armando...
>
> Seguiré investigando entonces, cualquier idea que se les ocurra
> serán bien recibida.
>

para evitar romper todo python tendrias que hacer que tu
implementacion de lista tenga exactamente el mismo comportamiento que
la lista default de python, en cuyo caso tu tipo de dato y el builtin
pasarian a ser el mismo (o el tuyo seria un superset quizas, cosa que
podrias hacer heredando de list).



More information about the pyar mailing list