Définir une variable globale de classe en Python

Isaac Tony 22 janvier 2022
Définir une variable globale de classe en Python

Une variable globale est une variable visible et peut être utilisée dans chaque partie d’un programme.

Les variables globales ne sont également définies dans aucune fonction ou méthode. D’un autre côté, les variables locales sont définies dans les fonctions et ne peuvent être utilisées que dans ces fonctions.

Une portée ou un environnement global est composé d’un ensemble de variables visibles dans tout le programme. En Python, la portée peut être une zone d’un programme Python où une variable, une fonction ou un module peut être consulté et utilisé.

Généralement, en programmation, la portée globale remplace à la fois la portée de bloc et la portée locale.

En programmation, les variables sont appelées emplacements mémoire pouvant être utilisés pour stocker des valeurs. Cependant, en Python, les variables créées sous une classe sont appelées variables de classe, tandis que celles déclarées sous un objet particulier peuvent être appelées variables d’instance.

Alors que les variables de classe sont normalement déclarées sous la définition de classe en dehors de toutes les méthodes et autres variables, les variables de classe globale sont déclarées en dehors d’une classe. Ils sont accessibles par n’importe quelle méthode et classe.

Les variables globales sont définies comme suit.

model = "SPlaid"
class Cars:

Comme indiqué ci-dessous, les variables globales sont accessibles par n’importe quelle classe ou méthode au sein d’une classe en appelant simplement le nom de la variable. Les variables globales sont également accessibles par plusieurs classes et méthodes en même temps.

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

Production :

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

Définir les variables de classe en tant que variables globales

On peut aussi modifier une variable de portée locale pour qu’elle devienne disponible dans la portée globale en utilisant le mot-clé global.

Toute variable définie dans une fonction est considérée comme une variable locale et ne peut donc être utilisée que dans la portée locale. Cependant, en utilisant le mot-clé global, nous pouvons modifier la portée d’une variable locale pour qu’elle soit accessible globalement.

De même, nous pouvons également rendre une variable de classe accessible en dehors de la classe qui a été définie à l’aide du mot clé global. La variable de classe peut être utilisée par d’autres classes et méthodes en dehors de cette classe particulière.

Dans l’extrait ci-dessous, nous allons essayer d’utiliser une variable de classe en dehors de la classe. Nous aurons certainement une erreur nous indiquant que la variable n’est pas définie.

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)

Production :

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

Comme on le voit dans l’exemple de code ci-dessus, nous essayons d’accéder à la variable de classe définie dans la classe Tesla. Cependant, cela entraîne une erreur car une variable déclarée dans une classe n’est accessible que dans cette seule classe.

Mais, comme mentionné précédemment, nous pouvons éviter cette erreur en utilisant le mot-clé global avant de définir la variable de classe. Ce n’est qu’alors que nous pouvons accéder à la variable en dehors de la classe.

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)

Production :

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

Une fois que nous avons déclaré la variable de classe comme variable globale, elle est accessible en dehors de sa propre classe et au sein d’autres classes.

Dans l’extrait de code ci-dessus, nous accédons à la variable de vitesse définie comme variable globale dans la classe Tesla de la classe Lucid. Contrairement à l’exemple précédent où nous avons eu une erreur, nous pouvons accéder à la variable car elle est maintenant disponible dans la portée globale.

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)

Production :

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

Il est intéressant de noter que les variables globales déclarées, telles que les variables de vitesse, peuvent également être consultées et utilisées par des méthodes d’une autre classe.

Par exemple, dans l’illustration de code ci-dessous, une méthode définie dans la classe Lucid a accès à la variable de vitesse. Ceci n’est possible que lorsque le mot clé global précède une variable de classe avant une déclaration.

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

Production :

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

Article connexe - Python Variable