[pyar] Primeros pasos POO: destruyendo objetos

Marcos Dione mdione en grulic.org.ar
Mie Feb 14 05:14:13 ART 2018


On Tue, Feb 13, 2018 at 04:59:56PM -0300, Luis Andraschnik wrote:
> En realidad hay una sola clase , Persona. Población no es una clase sino
> una variable de clase, compartida por todas las instancias de persona. Por
> eso la quería usar para mantener en forma automática el número de
> pobladores. Cada vez que creo uno o elimino uno (siempre que use el método
> morir() ...), todo va bien salvo que el objeto en cuestión no muere para
> nada y queda en memoria ...

    ups, tenía mala memoria del nombre de la clase, sorry.

    si realmente querés saber si una Persona está muerta o no, deberías
agregarle un boolean que mantenga ese estado, lo ponés a True en el
constructor y a False en morir(), y como hacés ahora, mantener la
población contada en esos dos métodos también. eventualmente cuando
procesás personas, podés decidir si procesar muertas o no, o de hacer
garbage (deade) collection. 

    pero tené en cuenta que si pudiras destruri el objeto en morir(), aún
en otros leguajes OOP, tendrías un problema con cualquier otra referencia
que pueda andar dando vueltas. peor, por ejemplo, en c++, hacer 'del c'
libera la memoria y la próximavex qe pases por esa Persona podrías
recibir un SIGSEGV o estar leyendo la memria de cualquier otro objeto.

> En fin no es para resolver ningún problema particular sino para aprender
> POO que hasta ahora le vengo escapando, ya que cada vez que veo código con
> clases me da fobia ...

    mirá, si realmente lo querés hacer así, ok, entonces mirate __new__()
y __del__(), pero leete bien los caveats que hay en la doc. 

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