28.12.2014 Views

TuxInfo 19 - Index of

TuxInfo 19 - Index of

TuxInfo 19 - Index of

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Las listas, conjuntos y los diccionarios pertenecen al grupo conocido como estructuras de<br />

datos mutables. Esta clasificación implica que los valores que contienen pueden ser<br />

alterados en tiempo de ejecución. En otras palabras: se pueden remplazar el elemento<br />

que se encuentra en cualquier posición en una lista; se puede adicionar o remover un<br />

objeto de un conjunto; a una llave podemos asignarle cualquier otro objeto en cualquier<br />

momento; y así sucesivamente. Por el contrario, los tipos str y unicode son calificados<br />

como inmutables, debido a que su contenido no puede ser modificado. Existen otros dos<br />

contenedores, tuple y frozenset, que son similares respectivamente a las listas y<br />

conjuntos, pero que son inmutables. Es decir si se tiene en cuenta la tupla t = (0, 1, 2, 3)<br />

entonces la instrucción t[2] = 9 redundará en un error al no estar permitida la modificación<br />

de los elementos de la tupla.<br />

Si se presta atención a las características de los diferentes tipos de datos presentados, se<br />

puede notar la gran variedad de definiciones del operador []. Todo esto es posible gracias<br />

a la sobrecarga de operadores que permite el lenguaje a través de los métodos<br />

__getitem__, __setitem__ y __delitem__. Estos se encargan respectivamente de la<br />

escritura, lectura y remoción de los elementos del objeto contenedor. Cuando estas<br />

operaciones afectan un único elemento, el intérprete les pasa su índice como parámetro.<br />

En el caso de las listas y otras secuencias, estos valores deben ser números enteros,<br />

mientras que otros objetos como los diccionarios aceptan cualquier objeto que no sea un<br />

contenedor mutable (e.g. enteros, cadenas o tuplas, pero no listas ni diccionarios). Si se<br />

implementaran estos métodos en una clase, obtendríamos un contenedor ajustado a<br />

nuestras necesidades.<br />

Por ejemplo, este es el caso de las clases array (utilizada para contener elementos<br />

numéricos accedidos de manera eficiente) y deque (cola con dos extremos -sí un bicho<br />

de dos cabezas :P -). De igual manera, el índice especificado para acceder a un elemento<br />

de un contenedor no tiene que ser un número, lo que diferencia a Python de otros<br />

lenguajes como Java. Esta característica puede emplearse también para declarar<br />

propiedades indexadas, similares a las de Object Pascal (Borland Delphi). El protocolo<br />

implementado por los contenedores en Python, le acerca a los lenguajes orientados a<br />

objetos.<br />

72

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!