Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre este funcion del modulo de colecciones.

Anuncios

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)
>>>
Anuncios

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]
>>>
Anuncios

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]
>>>
Anuncios

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")
... 
>>>
Anuncios

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])
Anuncios

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]
>>>
Anuncios

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
>>>
Anuncios

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.

Anuncios

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.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.00