Evolución dinámica de los objetos a diferentes clases
Marcos Sánchez Provencio
rapto en arrakis.es
Jue Ago 22 21:14:56 CEST 2002
En cosas sencillas, he probado y vale con meterle el __class__ a pelo.
Había que probarlo :-D
class a:
def x(self):
return 'a'
class b:
def x(self):
return 'b'
aa=a()
print aa.x()
aa.__class__=b
print aa.x()
Habría que tener cuidado con las variables de objeto (no de clase).
Vamos, si a tiene un atributo nn y b no lo tiene, habría que asignárselo
al ascenderlo.
Diabólicamente dinámico.
El jue, 22-08-2002 a las 19:50, Ernesto Revilla escribió:
> 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