Definieren eine globale Klassenvariable in Python

Isaac Tony 22 Januar 2022
Definieren eine globale Klassenvariable in Python

Eine globale Variable ist eine sichtbare Variable und kann in jedem Teil eines Programms verwendet werden.

Globale Variablen sind auch in keiner Funktion oder Methode definiert. Andererseits werden lokale Variablen innerhalb von Funktionen definiert und können nur innerhalb dieser Funktion(en) verwendet werden.

Ein globaler Geltungsbereich oder eine globale Umgebung besteht aus einer Reihe von Variablen, die im gesamten Programm sichtbar sind. In Python kann der Geltungsbereich ein Bereich in einem Python-Programm sein, in dem auf eine Variable, Funktion oder ein Modul zugegriffen und diese verwendet werden kann.

Im Allgemeinen ersetzt der globale Geltungsbereich bei der Programmierung sowohl den Block- als auch den lokalen Geltungsbereich.

In der Programmierung werden Variablen als Speicherorte bezeichnet, die zum Speichern von Werten verwendet werden können. In Python werden Variablen, die unter einer Klasse erstellt wurden, jedoch als Klassenvariablen bezeichnet, während diejenigen, die unter einem bestimmten Objekt deklariert wurden, als Instanzvariablen bezeichnet werden können.

Während Klassenvariablen normalerweise unter der Klassendefinition außerhalb aller Methoden und anderer Variablen deklariert werden, werden globale Klassenvariablen außerhalb einer Klasse deklariert. Auf sie kann von jeder Methode und Klasse zugegriffen werden.

Globale Variablen werden wie folgt definiert.

model = "SPlaid"
class Cars:

Wie unten gezeigt, kann auf globale Variablen von jeder Klasse oder Methode innerhalb einer Klasse zugegriffen werden, indem einfach der Name der Variablen aufgerufen wird. Auf globale Variablen kann auch von mehreren Klassen und Methoden gleichzeitig zugegriffen werden.

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

Ausgabe:

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

Klassenvariablen als globale Variablen definieren

Wir können auch eine lokale Gültigkeitsvariable ändern, damit sie im globalen Gültigkeitsbereich verfügbar wird, indem wir das Schlüsselwort global verwenden.

Jede innerhalb einer Funktion definierte Variable wird als lokale Variable betrachtet und kann daher nur innerhalb des lokalen Gültigkeitsbereichs verwendet werden. Mit dem Schlüsselwort global können wir jedoch den Gültigkeitsbereich einer lokalen Variablen so ändern, dass sie global zugänglich ist.

Ebenso können wir eine Klassenvariable auch außerhalb der Klasse zugänglich machen, die mit dem Schlüsselwort global definiert wurde. Die Klassenvariable kann von anderen Klassen und Methoden außerhalb dieser bestimmten Klasse verwendet werden.

Im folgenden Ausschnitt versuchen wir, eine Klassenvariable außerhalb der Klasse zu verwenden. Wir werden sicherlich eine Fehlermeldung erhalten, die uns mitteilt, dass die Variable nicht definiert ist.

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)

Ausgabe:

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

Wie im obigen Codebeispiel zu sehen ist, versuchen wir, auf die Klassenvariable zuzugreifen, die in der Klasse Tesla definiert ist. Dies führt jedoch zu einem Fehler, da auf eine innerhalb einer Klasse deklarierte Variable nur innerhalb dieser Klasse zugegriffen werden kann.

Aber wie bereits erwähnt, können wir diesen Fehler abwenden, indem wir das globale Schlüsselwort verwenden, bevor wir die Klassenvariable definieren. Erst dann können wir auf die Variable außerhalb der Klasse zugreifen.

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)

Ausgabe:

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

Nachdem wir die Klassenvariable als globale Variable deklariert haben, ist sie außerhalb ihrer eigenen Klasse und innerhalb anderer Klassen zugänglich.

Im obigen Code-Schnipsel greifen wir auf die als globale Variable definierte Geschwindigkeitsvariable in der Klasse Tesla aus der Klasse Lucid zu. Im Gegensatz zu dem vorherigen Beispiel, bei dem ein Fehler aufgetreten ist, können wir auf die Variable zugreifen, da sie jetzt im globalen Gültigkeitsbereich verfügbar ist.

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)

Ausgabe:

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

Interessanterweise kann auf deklarierte globale Variablen, wie zB Geschwindigkeitsvariablen, auch von Methoden einer anderen Klasse zugegriffen und diese verwendet werden.

In der folgenden Codeabbildung hat beispielsweise eine in der Lucid-Klasse definierte Methode Zugriff auf die Geschwindigkeitsvariable. Dies ist nur möglich, wenn das Schlüsselwort global vor einer Klassenvariablen vor einer Deklaration steht.

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

Ausgabe:

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

Verwandter Artikel - Python Variable