Persistencia para una variable

Chema Cortes pych3m4 en gmail.com
Mar Feb 27 20:29:11 CET 2007


El 27/02/07, Germán Carrera <gcarrera en cnb.uam.es> escribió:

> Gracias por la ayuda, el caso es un poco enrevesado y para buscar una
> solución, debido a que no puedo modificar el código que no forma parte
> de mi módulo hice una reproducción con un pequeño ejemplo de lo que pasaba .
>
> Esto es a grandes rasgos, en cada iteración se creaba una instancia
> nueva de "test" perdiéndose el valor de las propiedades de la clase
> generada anteriormente, añadiendo el global (en este caso que el objeto
> se instancia en cada iteración) se acaban más o menos los problemas.
>
> Si pudiera accader al resto, sólo haría falta quitar test_=test() de
> dentro del for y ponerlo encima.

Entiendo mejor el problema. Como te comentaba, la alternativa a usar
variables globales sería usar atributos de clase:

class test:
   carajo=[6,7]
   def __init__(self):
       None
   def algofunc(self,iter):
       for n in range(90):
           if iter==5:
               test.carajo=[2,3,3,4,5,3,4,3]
       print test.carajo


La ventaja de hacerlo así es que haces que el atributo global se
asocie a la clase, con lo que queda más claro si vas a hacer
subclases.

Por cierto, cuando no quieras poner nada en el cuerpo de una función
usa el token 'pass':

   def __init__(self):
       pass




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