Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: abreu20011 en 3 Octubre 2012, 20:05 pm



Título: Variables que no se guardan fuera de funcion (Python)
Publicado por: abreu20011 en 3 Octubre 2012, 20:05 pm
Saludos,

La verdad es que ya no sé si me esta tomando el pelo o qué pasa aquí. Estoy programando bajo la API de Autodesk Maya sobre Python algo muy, muy básico: cambiar el valor de una variable mediante una función.

Pero mi asombro y mi desesperación es que, si cambio el valor de la variable desde dentro de la función (en teoría, es una variable creada FUERA de la función, por lo que debería ser global) y sin salir de la función, le digo que me haga un print del valor... funciona.

Pero en cuanto llamo a la misma variable (se supone, ya modificada) desde otra función, no hace nada. Simplemente, deja el valor con el que fue creada la variable :(

Es como si creara una segunda variable en mi función o no guardara nada o no sé qué u.u

¿Alguna sugerencia?

Código:
import maya.cmds as mc

variable = '_MAL_'
collection1 = mc.radioCollection()

ventana = mc.window(t = 'a')
mc.columnLayout(adj = True)

mc.radioButton(l = 'A', cl = collection1, onc = 'F1()')
mc.radioButton(l = 'B', cl = collection1, onc = 'F2()')
mc.button(l = 'ver', c = 'Ver()')

mc.showWindow(ventana)

def F1():
    variable = 'A'
    print 'variable modificada a A'
    print 'valor leido desde F1(): ' + variable

def F2():
    variable = 'B'
    print 'variable modificada a B'
    print 'valor leido desde F2(): ' + variable
    
def Ver():
    print variable

Un saludo y gracias!


Título: Re: Variables que no se guardan fuera de funcion (Python)
Publicado por: abreu20011 en 4 Octubre 2012, 20:33 pm
Por favor, que alguien me ayude, cualquiera idea me vendrá bien :)


Título: Re: Variables que no se guardan fuera de funcion (Python)
Publicado por: @synthesize en 4 Octubre 2012, 21:53 pm
1. Te recomiendo no usar globales, usa alguna clase con getters y setters. Luego si me animo te pego algún ejemplo.

2. Para modificar una global dentro de una función, utiliza
Código
  1. global tuvariable
y luego la modificas dentro de la función. Python se crea una copia local de la variable en la función, por eso no te funciona.


Título: Re: Variables que no se guardan fuera de funcion (Python)
Publicado por: abreu20011 en 5 Octubre 2012, 16:04 pm
Gracias Daemon :)

Estoy mirando algunas cosas que me has pasado porque me huelo que me voy a tener que crear una clase para esa información. Cosa que me parece un poco exagerada, pero bueno...

Gracias ^^