modelo de objetos (era, RE: la 2.2 ok y dudilla)

Hernan Martinez Foffani hernan en orgmf.com.ar
Vie Mayo 31 20:54:29 CEST 2002


> Ok, lo pillo, pero... de esa forma tenemos que declarar esas
> variables y con ello reservar
> posiciones de memoria para ellas que de la otra forma no
> reservamos y solo utilizamos en momento
> de ejecucion esas zonas de memoria.

Muchas veces usamos la palabra "variable" en python. No está
mal, pero hay que tener especial cuidado en no olvidar como
funciona el modelo de objetos de python.

Una forma sencilla de entenderlo es pensar en objetos y en
etiquetas (tipo PostIt)
A cualquier objeto le podemos pegar una (o varias) etiquetas
cada una con un nombre:

>>> a = b = c = "texto"
>>>

al objeto "texto" le hemos pegado tres etiquetas con los
nombres "a", "b" y "c" respectivamente. si luego hacemos:

>>> b = 3
>>>

entonces lo que hemos hecho es despegar el PostIt "b" y
pegarselo al objeto 3. la cadena "texto" se quedó con
dos etiquetas pegadas (la "a" y la "c")

mientras cualquier objeto tenga alguna etiqueta encima
ese objeto permanecera en memoria. Python lleva la cuenta
de cuantas etiquetas tiene cada objeto y cuando esa cuenta
llega a cero Python libera la memoria que ocupaba ese objeto.

>>> a = 1         # despego "a" y se la pego al 1
>>> c = 2         # despego "c" y se la pego al 2
>>>               # python libero a "texto" de la memoria
                  # porque se quedo sin etiquetas.

Tecnicamente hablando las etiquetas son los "nombres" ("names")
y el proceso de pegado es la ligadura (o vinculacion o atadura
o union) ("binding")

Hay mucho mas y esto es solo algo muy resumido. Estoy
traduciendo un par de documentos muy interesantes. Se los
haré llegar cuando los termine.

Saludos,
-Hernan






Más información sobre la lista de distribución Python-es