Python - Problemas con POO

   
Vista:

Problemas con POO

Publicado por Carlosls (2 intervenciones) el 19/06/2009 10:37:44
Buenos dias, tengo un problema relacionado con programacion orientado a objetos. Os pongo un ejemplo del codigo simplificado:

------------------------------
variable = "Hola"

def funcion():
variable = "Adios"

class Cambiar:
def __init__(self):
....
def Prueba(self):
funcion()

C = Cambiar()
C.Prueba()

print variable #Salida por pantalla: Hola
----------------------------

Como podeis observar llamo a una funcion dentro de la clase del objeto. Dicha funcion se encarga de cambiar el valor de una variable global. El problema viene porque la variable sigue presentando el valor "Hola" ya que el cambio lo hago dentro de la clase. Me gustaria saber como puedo hacer para que cuando llame a la funcion afecte el cambio a la variable global.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con POO

Publicado por Carlosls (2 intervenciones) el 19/06/2009 17:29:39
Ya encontre solucion:

------------------------------
variable = "Hola"

def funcion():
global variable #Solución al problema
variable = "Adios"

class Cambiar:
def __init__(self):
....
def Prueba(self):
funcion()

C = Cambiar()
C.Prueba()

print variable #Salida por pantalla: Hola
-------------------------------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con POO

Publicado por Sebastián López Buriticá (17 intervenciones) el 19/09/2009 11:25:56
'''
Aqui la solucion a tu problema
aún cuando no es recomendado en python utilizar
el comando global
'''

valorglobal = "Carlos"
print valorglobal
def cambioglobal():
____global valorglobal # las ____ significan espacios
____valorglobal = "Selobu"
cambioglobal()
print valorglobal
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar