[pyar] Primeros pasos POO: destruyendo objetos

Marcos Dione mdione en grulic.org.ar
Mar Feb 13 13:06:12 ART 2018


On Tue, Feb 13, 2018 at 12:45:34PM -0300, Luis Andraschnik wrote:
> Porqué no funciona esto? Creo un clon de mi persona (más joven) y lo mato,
> pero parece indestructible ...

    eso te pasa por jugar con genetica :-P

> class Persona():
>     poblacion=0
>     def __init__(self, nombre, edad):
>         self.nombre = nombre
>         self.edad = edad
>         Persona.poblacion += 1
> 
>     def morir(self):
>         Persona.poblacion -= 1
>         del self
> 
> b = Persona('Clon', 25)
> print(b.nombre, b.edad, b.poblacion)
> 
> b.morir()
> 
> Por qué el objeto b sigue existiendo?

    porque cuando hacés 'del self', 'b' aún tiene una referencia al
objeto, así que su refcount > 0. entonces, no sólo el objeto no es
destruído, eso te permite poder seguir referenciándolo usando el nombre
'b'. 

    tengo la impresión de que 'del self' jamás tendrá ningún impacto más
allá de que no podés volver a usar 'self' en el método desde esa línea en
adelante. eso es porque cuando estás en el método, en realidad lo has
llamado usando alguna otra referencia, aunque más no sea una entrada en
una list o diccionario o algo por el estilo.

-- 
(Not so) Random fortune:
The technology industry sees itself as in rebellion against corporate
America: not corrupt, not buttoned-up, not empty. In fact, a tech company
can be as corrupt, soulless, and empty as any corporation, but being
unprofessional helps us maintain the belief that we are somehow different
from Wall Street.
	    -- Shanley Kane


Más información sobre la lista de distribución pyar