Ver Mensaje Individual
  #4 (permalink)  
Antiguo 22/05/2009, 22:58
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: variables globales en clases

Lo que sucede es que estás creando dos objetos de clase Counter, por lo que cada uno tiene su atributo counter que nada tiene que ver con el del otro.

Para lograr lo que querés hay dos formas:
1.- Utilizar un Singleton
2.- Utilizar atributos de clase.

Para la forma 1, que es la más complicada, prefiero que la Wikipedia sea quien de la explicación.

Para la forma dos, te recomiendo este enlace que encontré sobre atributos de clase en Python. Básicamente resulta en que las clases en Python pueden tener sus propios atributos, que se acceden directamente como "nombredeClase.atributo". Una vez que creas un objeto de esa clase, el objeto tiene un atributo del mismo nombre pero no es el mismo, es una copia propia del objeto.

Por lo que, en este caso, tanto desde Mod1 como desde Mod2 deberías ser capaz de hacer

Counter.counter += 1;

modificando así el atributo de la clase. Pero cuidado: por lo mencionado antes de que los atributos que ganan los objetos son copias de los de la clase, modificar el atributo de la clase no hace que los objetos vean el cambio (como se demuestra en el enlace que te pasé antes), como sucedería en Java con atributos estáticos.
Para que desde cualquier lugar puedas manejar un objeto de clase Counter, con acceso a través del objeto al atributo counter, deberías implementar un singleton.


Saludos.