Persistencia para una variable

Germán Carrera gcarrera en cnb.uam.es
Mie Feb 28 14:29:28 CET 2007


Hola Chema,

Voy a probar lo que me comentas sobre variables de clase la solución 
parece mucho más elegante que la de usar variables locales.

Muchas gracias.

Chema Cortes wrote:
> 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
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>




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