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

Ernesto Revilla aerd en retemail.es
Jue Ago 22 19:50:43 CEST 2002


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












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