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
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