0

Por ejemplo tengo algo como:

variable = ""

 class MiClase:
     def unaFuncion():
          condicional:
              #Quiero cambiar el "variable" desde acá

Esto con el fin de pasar variable a otro modulo de python. Muchas gracias y me excuso si es ambigua la pregunta.

Beta
  • 3
  • 1
  • Por qué esa variable existe fuera de la clase y no como una propiedad de está ? – BetaM Aug 24 '20 at 01:33
  • @BetaM Necesito pasar el valor de esa variable a otro modulo, osea cojo en el otro archivo python y le digo que desde el modulo donde está variable me importe esa variable – Beta Aug 24 '20 at 01:38
  • No parece que tener una variable global sea la mejor opción y menos si la pregunta es acerca de programación orientada a objetos. Idealmente deberías pensar en cómo abstraer los datos y operaciones de tu programa en forma de objetos que interactúan entre sí. – Hernán Alarcón Aug 24 '20 at 01:44
  • @HernánAlarcón Vale pensaré en lo que me dices :), sin embargo disculpa si parezco necio preguntando pero es posible hacer lo uqe propuse? Olvidando claro que tal vez no sea lo adecuado en POO, quiero pasar esa variable importandola a ptro módulo – Beta Aug 24 '20 at 01:50
  • Por què no la defines como ámbito global dentro de la clase? –  Aug 24 '20 at 02:35
  • @Gabitohh ¿Osea dentro de la clase poner global variable? A eso te refieres? No sabía que se podía hacer – Beta Aug 24 '20 at 02:43
  • Si, a eso me refiero. –  Aug 24 '20 at 02:45
  • @Gabitohh no se modifica la variable :(, podrías mostrarme un ejemplo tal vez estoy omitiendo o haciendo algo mal – Beta Aug 24 '20 at 02:47

1 Answers1

1

Como puedo modificar una variable local desde una clase en python

Aclarar que es mala práctica usar variables globales, sin embargo, la única manera de de modificar una variable definida en un bloque externo al que se refiere, es de esta manera.

En Python todas las variables por defecto tiene un ámbito local, para extender su ámbito a otros bloques de código se usa la sentencia global

The global statement is a declaration which holds for the entire current code block.

Con bloques de código, nos referimos a funciones.

variable = "sin "

class Clase:
    def metodo(self):
        global variable

        variable += "modificar"
        print(variable)

objeto = Clase()
objeto.metodo()

Extender a ámbito global por cada método de la clase no es practico, puedes definir a la variable externa como atributo de la clase por medio de __init__().

variable = "sin "

class Clase:
    def __init__(self):
        global variable

        self.variable = variable

    def metodo(self):

        self.variable += "modificar"
        print(self.variable)

objeto = Clase()
objeto.metodo()

Esto con el fin de pasar variable a otro modulo.

Dicho esto, te aconsejo encontrar otra manera.

Puedes importar las variables definidas en un archivo .py al importar dicho archivo.

from modulo import variable #variable
from modulo import * #variable
import modulo #modulo.variable

Como comentario la manera de acceder en el archivo principal

Espero haberte ayudado.