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