Definir una variable global de clase en Python

Isaac Tony 22 enero 2022
Definir una variable global de clase en Python

Una variable global es una variable visible y se puede utilizar en todas las partes de un programa.

Las variables globales tampoco están definidas dentro de ninguna función o método. Por otro lado, las variables locales se definen dentro de las funciones y solo se pueden usar dentro de esas funciones.

Un ámbito o entorno global se compone de un conjunto de variables visibles en todo el programa. En Python, el alcance puede ser un área en un programa de Python donde se puede acceder y usar una variable, función o módulo.

Generalmente, en programación, el alcance global reemplaza tanto al alcance local como al bloque.

En Programación, las variables se denominan ubicaciones de memoria que se pueden utilizar para almacenar valores. Sin embargo, en Python, las variables creadas bajo una clase se denominan variables de clase, mientras que las declaradas bajo un objeto en particular pueden denominarse variables de instancia.

Mientras que las variables de clase normalmente se declaran bajo la definición de clase fuera de todos los métodos y otras variables, las variables de clase global se declaran fuera de una clase. Se puede acceder a ellos mediante cualquier método y clase.

Las variables globales se definen de la siguiente manera.

model = "SPlaid"
class Cars:

Como se muestra a continuación, cualquier clase o método dentro de una clase puede acceder a las variables globales simplemente llamando al nombre de la variable. También se puede acceder a las variables globales mediante múltiples clases y métodos al mismo tiempo.

car_type = "SUV"
print("Outside all classes", car_type)


class Tesla:
    print("Type of the car within the Tesla class is:", car_type)

    def __init__(self, car_type):
        self.car_type = car_type

    def display_tesla(self):
        print("Type of car within a Tesla method:", car_type)

    # creating object to access method
    #


tsl_object = Tesla(car_type)

tsl_object.display_tesla()


class Lucid:
    print("Type of the car within the Lucid class is:", car_type)

    def __init__(self, car_type):
        self.car_type = car_type

    def display_lucid(self):
        print("Type of the car within the Lucid method:", car_type)


# creating an object to access the method within the Lucid Class.
lucid_object = Lucid(car_type)
lucid_object.display_lucid()

Producción :

Outside all classes SUV
Type of the car within the Tesla class is: SUV
Type of car within a Tesla method: SUV
Type of the car within the Lucid class is: SUV
Type of the car within the Lucid method: SUV

Definir variables de clase como variables globales

También podemos modificar una variable de alcance local para que esté disponible en el alcance global usando la palabra clave global.

Cualquier variable definida dentro de una función se considera una variable local y, por lo tanto, solo se puede usar dentro del ámbito local. Sin embargo, usando la palabra clave global, podemos cambiar el alcance de una variable local para que sea accesible globalmente.

De manera similar, también podemos hacer que una variable de clase sea accesible fuera de la clase que se ha definido usando la palabra clave global. La variable de clase puede ser utilizada por otras clases y métodos fuera de esa clase en particular.

En el fragmento a continuación, intentaremos usar una variable de clase fuera de la clase. Sin duda, obtendremos un error que nos hará saber que la variable no está definida.

class Tesla:
    # creating a class variable
    speed = 60

    print("Acessing speed variable within the class:", speed)

    def __init__(self, speed):
        self.speed = speed

        def display_speed():

            print("Speed of the Tesla is:", speed)


print("Accessing the class variable outside the Tesla Class", speed)

Producción :

print("Accessing the class variable outside the Tesla Class", speed)
NameError: name 'speed' is not defined

Como se ve en el ejemplo de código anterior, estamos intentando acceder a la variable de clase definida dentro de la clase Tesla. Sin embargo, esto da como resultado un error, ya que una variable declarada dentro de una clase solo es accesible dentro de esa clase.

Pero, como se mencionó anteriormente, podemos evitar este error utilizando la palabra clave global antes de definir la variable de clase. Solo entonces podremos acceder a la variable fuera de la clase.

class Tesla:
    # creating a class variable and making it a variable
    global speed
    speed = 60

    print("Accessing speed variable within the class:", speed)

    def __init__(self, speed):
        self.speed = speed

        def display_speed():

            print("Speed of the Tesla is:", speed)


print("Accessing the class variable outside of the Tesla class", speed)

Producción :

Accessing speed variable within the class: 60
Accessing the class variable outside of the Tesla class 60

Una vez que hemos declarado la variable de clase como una variable global, es accesible fuera de su propia clase y dentro de otras clases.

En el fragmento de código anterior, accedemos a la variable de velocidad definida como variable global en la clase Tesla de la clase Lucid. A diferencia del ejemplo anterior donde obtuvimos un error, podemos acceder a la variable ya que ahora está disponible en el alcance global.

class Tesla:
    # creating a class variable and making it a global variable
    global speed
    speed = 60

    print("Acessing speed variable within the class:", speed)

    def __init__(self, speed):
        self.speed = speed

        def display_speed():
            print("Speed of the Tesla is:", speed)


# accessing the speed variable from outside the class
print("Accessing the class variable", speed)


class Lucid:
    # accessing the speed variables from a different class
    print("Accessing the speed variable from a different class:", speed)

Producción :

Accessing speed variable within the class: 60
Accessing the class variable 60
Accessing the speed variable from a different class: 60

Curiosamente, las variables globales declaradas, como las variables de velocidad, también pueden ser accedidas y utilizadas por métodos de otra clase.

Por ejemplo, en la siguiente ilustración de código, un método definido en la clase Lucid tiene acceso a la variable de velocidad. Esto solo es posible cuando la palabra clave global precede a una variable de clase antes de una declaración.

class Tesla:
    # creating a class variable and making it a global variable
    global speed
    speed = 60

    print("Accessing speed variable within the class:", speed)

    def __init__(self, speed):
        self.speed = speed

        def display_speed():

            print("Speed of the Tesla is:", speed)


print("Accessing the class variable", speed)


class Lucid:
    print("Accessing the speed variable from a different class:", speed)

    def __init__(self, speed):
        self.speed = speed

    def display_tesla_speed(self):
        print("Accessing the speed variable from a method in another class:", speed)


lucid_object = Lucid(speed)
lucid_object.display_tesla_speed()

Producción :

Accessing speed variable within the class: 60
Accessing the class variable 60
Accessing the speed variable from a different class: 60
Accessing the speed variable from a method in another class: 60
Autor: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn

Artículo relacionado - Python Variable