[Python-es] Clase de Clases

Chema Cortes pych3m4 en gmail.com
Lun Ene 21 22:21:46 CET 2013


El día 21 de enero de 2013 16:00, Alvaro Manrique
<sanreikaj.foros en gmail.com> escribió:
> Gracias Chema y Oswaldo
>
> Emmm tomando lo ultimo que dices Oswaldo ya estoy en el desastre jejeje, mi
> problema es tal cual lo planteas.
>
> Planteo el problema de esta manera:
>
> Necesito que la clase Hija herede de la clase base para que tenga sus
> métodos y atributos, hasta aquí todo bien.
>
> Luego los atributos de la clase hija también deben ser objetos ya que ellos
> deben manejar sus propios atributos y métodos, aquí es donde nace la idea de
> que sean instancias de otra clase aparte y de hecho hasta aquí todo funciona
> de maravilla el problema es cuando necesito crear otra instancia de la misma
> clase hija.
>
> Si pudiese lograr que cuando se destruya la instancia de la clase hija
> también lo hagan sus atributos seria la solución, pero como dices Chema
> quizá es problema de concepto.

Lo que me despista es la comparación con un ORM. Que los atributos se
comporten como objetos es lo normal, en python todo son objetos. El
problema parece ser que no quieres que sean atributos compartidos por
todas las instancias (atributos de clase). Entonces tendrás que
declararlos dentro de algún método de inicialización o de creación de
la instancia.

Si por lo que veo, cada instancia dices que quieres que tenga su
conexión, y no quieres que se comparta entre instancias, entonces
tienes dos opciones:

1) crea la conexión al inicializar la instancia (método __init__)
2) crea la conexión fuera de la definición de la clase y se la añades
como atributo a la instancia


Tal vez pueda serte útil echar un vistazo a la teoría de "Patrones de
Diseño", en concreto los patrones estructurales como Facade:

http://es.wikipedia.org/wiki/Patrón_de_diseño

http://www.etnassoft.com/biblioteca/design-patterns-in-python/


-- 
Hyperreals *R: http://ch3m4.org/blog
Quarks, bits y otras criaturas infinitesimales


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