Ver Mensaje Individual
  #7 (permalink)  
Antiguo 15/10/2008, 01:54
jdcf
 
Fecha de Ingreso: octubre-2008
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Clase dentro de clase

Cita:
Iniciado por venkman Ver Mensaje
No me hagas demasiado caso, pero recuerdo haber leído que la clase interna no puede acceder a las propiedades de la clase externa.

De todos modos, no estoy seguro de que tu intención de hacer que la clase interna dependa de la instancia usada para crearla sea del todo una buena idea. ¿Qué es lo que quieres hacer?
Hola venkman.
Te describiré brevemente mi proyecto (es un trabajo para la Universidad): quiero hacer una representación del sistema solar, para lo cual tengo una clase SistemaSolar y dentro de esta una clase para el Sol y otra para los planetas, basicamente. Me empeño en hacer clases anidadas porque, aunque en realidad sólo aparecerá en pantalla un sistema solar, me pareció lógico que si creaba dos sistemas solares cada uno tuviera su propio zoom, color de fondo o posición actual (datos de la clase SistemaSolar a los que tienen que acceder los planetas), y no quería pasar el sistema solar como parámetro al constructor de los planetas o el Sol (no son datos de éstos, según me parece); supongo que podría haberlo hecho de otra forma, pero será por mi costumbre a programar en Java.
Efectivamente estás en lo cierto, venkman, buscando un poco más (y juro que había buscado bastante) encontré una página donde indica que las clases anidadas de Python son como las clases estáticas de Java, esto es, nunca están asociadas a una instancia de un objeto si no al objeto clase al que pertenece, por lo que podemos acceder sólo a los atributos de clase (de nuevo, estáticos en Java), por lo que si hiciera dos sistemas solares ambos tendrían que compartir los mismos datos comunes, puesto que serían datos de la clase. Sin embargo, en la misma página viene la solución al problema:
pyhthon nested class: http://mail.python.org/pipermail/python-list/2005-July/330874.html
Se describe una función que convierte una clase estática en no-estática (tipo Python a tipo Java no estático); la verdad es que no he tenido tiempo a probarlo, pero si el test que viene para probarlo funciona de verdad es justo lo que necesitaba .
Así que nada, al final encontré la solución a mi problema; de todas maneras, gracias a quienes me habéis contestado. Espero que a alguien más le pueda servir de ayuda.

Un saludo.