Foros del Web » Programando para Internet » Python »

Variable global

Estas en el tema de Variable global en el foro de Python en Foros del Web. Hola. No entiendo qué es una variable global ni como se usa. ¿Alguien podría "iluminarme" el camino?...
  #1 (permalink)  
Antiguo 24/10/2011, 11:13
 
Fecha de Ingreso: enero-2010
Ubicación: Madrid/España
Mensajes: 89
Antigüedad: 14 años, 3 meses
Puntos: 3
Variable global

Hola. No entiendo qué es una variable global ni como se usa. ¿Alguien podría "iluminarme" el camino?
  #2 (permalink)  
Antiguo 24/10/2011, 11:27
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Variable global

Yo te ilumino.

Una variable global es una variable con alcance global desde cualquier parte del programa.

Ahora si sigues teniendo dudas similares te recominedo leer python para todos.
  #3 (permalink)  
Antiguo 24/10/2011, 12:10
 
Fecha de Ingreso: enero-2010
Ubicación: Madrid/España
Mensajes: 89
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: Variable global

Entonces hay algo que no estoy aplicando bien. Básicamente tengo esta estructura en un programa que usa variables globales, pero no consigo que desde el metodo "metodo()" guarde los datos de la variable global iniciada en __init__
Código Python:
Ver original
  1. class Classe():
  2. def __init__:
  3.     global Variable
  4.     Variable = "Hola"
  5. def metodo:
  6.     print Variable #imprime ''
  7. if __name__ = __main__:
  8.     clase = Classe()
  9.     Variable = ""
  #4 (permalink)  
Antiguo 24/10/2011, 16:21
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Variable global

No se como un código puede estar tan mal en tan solo 9 lineas.

El indentado esta mal
__init__ y metodo son métodos de la clase, no atributos.
__main__ no es ninguna variable del sistema.
Accedes a Variable antes de crearla.
= no un operador de comparación.

Básicamente son todos los errores que tiene tu programa.
  #5 (permalink)  
Antiguo 25/10/2011, 11:10
 
Fecha de Ingreso: enero-2010
Ubicación: Madrid/España
Mensajes: 89
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: Variable global

Bueno, fue código que no lo miré mucho y lo hize aquí mismo, lo puse para una visión general. Pero, qué es eso de que accedo a Variable antes de crearla? Cómo debería hacerlo?
Código Python:
Ver original
  1. #!/usr/bin/python
  2. class Classe:
  3.     def __init__(self):
  4.         global Variable
  5.         Variable = "Hola"
  6.     def metodo():
  7.         print Variable #imprime ''
  8. if __name__ == '__main__':
  9.     clase = Classe()
  10.     Variable = ""
  #6 (permalink)  
Antiguo 25/10/2011, 11:14
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Variable global

Deberías de crear la variable antes de usarla.

Código Python:
Ver original
  1. Variable = ""
  2. class Classe:
  3.     def __init__(self):
  4.         global Variable
  5.         Variable = "Hola"
  6.     def metodo():
  7.         print Variable #imprime ''
  8. if __name__ == '__main__':
  9.     clase = Classe()

PD: No uses variables globales es una mala practica.
  #7 (permalink)  
Antiguo 25/10/2011, 11:56
 
Fecha de Ingreso: enero-2010
Ubicación: Madrid/España
Mensajes: 89
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: Variable global

Entonces, una solución posible para evitar usar las variables globales sería definirlas como self.Variable = "Hola" en el método __init__, no?
  #8 (permalink)  
Antiguo 25/10/2011, 12:39
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Variable global

Si, sería lo mas conveniente.

Por ejemplo:
Código Python:
Ver original
  1. class Classe:
  2.     def __init__(self):
  3.         self.Variable = "Hola"
  4.  
  5.     def metodo():
  6.         print self.Variable
  7.  
  8. if __name__ == '__main__':
  9.     clase = Classe()
  10.     print clase.Variable
  11.     clase.metodo()
  #9 (permalink)  
Antiguo 25/10/2011, 12:44
 
Fecha de Ingreso: enero-2010
Ubicación: Madrid/España
Mensajes: 89
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: Variable global

Gracias

Etiquetas: global, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:59.