Evolución dinámica de los objetos a diferentes clases

Arkaitz Bitorika Arkaitz.Bitorika en cs.tcd.ie
Dom Ago 25 16:52:34 CEST 2002


Ernesto,

Has pensado en usar el design pattern ("patron de diseino"?) "State"? Es
basicamente la idea que dio Antoni de utilizar roles, o cierto estado
asociado con cada instancia de Persona. De esta manera, cuando cambies
el estado o rol de Cliente a Proveedor o lo que sea, cambias solo esa
asociacion.
Este patron esta explicado muy bien en Design Patterns por Gamma et al.

saludos,
Arkaitz

On Thu, 2002-08-22 at 18:50, Ernesto Revilla wrote:
> Hola,
> 
> no tiene que ver directamente con Python, más bien con programación
> orientado a objeto.
> 
> Suponed que hay una clase Persona y otras dos clases que heredan de allí,
> Cliente y Proveedor.
> 
> 1. ¿Cómo puede modelarse que un objeto 'evoluciona' de un la a otro, por
> ejemplo, Persona evoluciona a ser Cliente.
> ¿se puede cambiar la clase de un objeto dinámicamente?
> (ya sé que se puede borrar y crear un objeto nuevo de la otra clase, ¿hay
> otra manera?)
> 
> 2. ¿Cómo podría hacerse que un objeto Cliente evolucionase a una clase
> Proveedor? (Es decir, una clase que no está en la rama de la clase actual
> del árbol de herencia.)
> 
> 3. He visto alguna vez algo como esto:
> C.__bases__.append(D)   # siendo C clase y D clase
> 
> Aunque no resuelva el tema de 1. y 2., me parecía interesante, poder
> enriquecer la funcionalidad de una clase, agregandole clases bases.
> 
> Respecto a 1. y 2. hemos llegado a la conclusión modelarlo de otra manera:
> crear clases Persona, DatosCliente y DatosProveedor, y hacer que Persona
> tenga una referencia opcional a cada uno. Si una persona nos compra algo y
> no tiene parte de cliente, esta es creada y asociada. Preguntar si un
> persona es cliente coincide con mirar si tiene una parte de datos de
> cliente.
> 
> ¿Por qué me importa eso? Por el tema de la persistencia. El tema de dejar
> evolucionar dinámicamente a los objetos, me crea ciertos trastornos a la
> hora de las actualizaciones.
> 
> Saludos,
> Erny
> 
> 
> 
> 
> 
> 
> 
> 
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo.py/python-es






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