Bienvenidos sean a este post, hoy hablaremos sobre este funcion del modulo de colecciones.
Esta clase actua como una clase contenedora alrededor de los objetos de una lista, esto nos puede ser muy util para cuando necesitamos crear una lista propia con alguna funcionalidad nueva o modificada, para esto se toma una instancia de una lista como argumento y simula una lista que se mantiene en una lista normal y este es accesible por los atributos de datos de esta clase, vamos a ver un ejemplo:
>>> from collections import UserList
>>> l = [1, 2, 3, 4]
>>> ul = UserList(l)
>>>
Como siempre importamos de las colecciones al tipo de dato, luego creamos una lista para trabajar con ella, nuestro siguiente paso sera crear el objeto de tipo UserList que llamaremos ul y le pasaremos la lista que generamos anteriormente, veamos como asigno la informacion:
>>> print(ul.data)
[1, 2, 3, 4]
>>>
Como pueden observar esto se creo correctamente y ahora tenemos una lista con la misma informacion que la original, si nosotros lo probamos veremos que la nueva copia se maneja como una lista comun y corriente:
>>> ul.append(5)
>>> print(ul.data)
[1, 2, 3, 4, 5]
>>> ul.pop()
5
>>> print(ul.data)
[1, 2, 3, 4]
>>>
En este caso agregamos un nuevo elemento a la lista, lo mostramos y verificamos que se agrego correctamente, despues usamos a pop para eliminarlo y vemos que tambien se ejecuto sin ningun error pero si nosotros queremos que no se pueda eliminar ningun elemento de la lista? Aqui entra en accion esta clase, vamos a definir primero una nueva clase:
>>> class MiLista(UserList):
... def remove(self, s = None):
... raise RuntimeError("No se permite borrar")
... def pop(self, s = None):
... raise RuntimeError("No se permite borrar")
...
>>>
En esta clase recibiremos un valor de tipo UserList, despues definiremos dos funciones para cuando usemos un remove o pop no hara la ejecucion correspondiente sino que generan un error con un mensaje personalizado en pantalla, nuestro siguiente paso sera crear un nueva lista:
>>> l = MiLista([1, 2, 3, 4])
Con nuestro nueva lista creada a traves de la nueva clase podemos comenzar a procesarlo como antes, veamos primero como esta cargada la informacion:
>>> print(l.data)
[1, 2, 3, 4]
>>>
Ahora probemos de eliminar un dato dentro de la lista mediante la funcion pop:
>>> l.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in pop
RuntimeError: No se permite borrar
>>>
Como pueden ver ahora no se puede borrar y nos muestra una notificacion de que no permitimos borrar la informacion contenida en la lista, esto no afectaria a la lista original sino simplemente al UserList que generamos alrededor del mismo.
En resumen, hoy hemos visto UserList, esta es una subclase de list, la principalcaracteristica que nos provee es poder crear una lista con nuestras propias reglas o personalizada sin afectar a la informacion original, esto es util dependiendo de la situacion que tengamos, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.00
