Geschachtelte Klasse in Python

Manav Narula 17 Februar 2021
Geschachtelte Klasse in Python

Klassen enthalten verschiedene Datenmitglieder und Funktionen und erlauben uns, Objekte zu erstellen, um auf diese Mitglieder zuzugreifen.

Python, als objektorientierte Programmiersprache, hat viele solcher Objekte verschiedener Klassen. In Python haben wir einen wichtigen Konstruktor namens __init__, der jedes Mal aufgerufen wird, wenn eine Instanz der Klasse erzeugt wird, und wir haben auch das Schlüsselwort self, um auf die aktuelle Instanz der Klasse zu verweisen.

Eine verschachtelte Klasse (auch innere Klasse genannt) wird innerhalb einer anderen Klasse definiert. Sie wird sehr häufig in allen objektorientierten Programmiersprachen verwendet und kann eine Menge Vorteile haben. Sie verbessert zwar nicht die Ausführungszeit, kann aber die Lesbarkeit und Wartung des Programms unterstützen, indem sie verwandte Klassen zusammenfasst und die verschachtelte Klasse auch vor der Außenwelt verbirgt.

Der folgende Code zeigt eine sehr einfache Struktur einer verschachtelten Klasse:

class Dept:
    def __init__(self, dname):
        self.dname = dname

    class Prof:
        def __init__(self, pname):
            self.pname = pname


math = Dept("Mathematics")
mathprof = Dept.Prof("Mark")

print(math.dname)
print(mathprof.pname)

Ausgabe:

Mathematics
Mark

Beachten Sie, dass wir nicht direkt auf die innere Klasse zugreifen können. Wir erzeugen ihr Objekt mit dem Format outer.inner.

Wir können auf die geschachtelte Klasse in der äußeren Klasse zugreifen, aber nicht andersherum. Um auf die verschachtelte Klasse in der äußeren Klasse zuzugreifen, können wir entweder das Format outer.inner oder das Schlüsselwort self verwenden.

Im folgenden Code nehmen wir einige Änderungen an den obigen Klassen vor und greifen über die Elternklasse auf eine Funktion der geschachtelten Klasse zu:

class Dept:
    def __init__(self, dname):
        self.dname = dname
        self.inner = self.Prof()

    def outer_disp(self):
        self.inner.inner_disp(self.dname)

    class Prof:
        def inner_disp(self, details):
            print(details, "From Inner Class")


math = Dept("Mathematics")

math.outer_disp()

Ausgabe:

Mathematics From Inner Class

Wir können in Python auch mehrere verschachtelte Klassen haben. Solche Situationen werden Multiple Nested Classes mit einer oder mehreren inneren Klassen genannt.

Es kann auch Fälle geben, in denen wir eine geschachtelte Klasse innerhalb einer geschachtelten Klasse haben, und dies wird eine mehrstufig geschachtelte Klasse genannt.

Der folgende Code zeigt ein sehr einfaches Beispiel für eine mehrstufig geschachtelte Klasse.

class Dept:
    def __init__(self, dname):
        self.dname = dname

    class Prof:
        def __init__(self, pname):
            self.pname = pname

        class Country:
            def __init__(self, cname):
                self.cname = cname


math = Dept("Mathematics")
mathprof = Dept.Prof("Mark")
country = Dept.Prof.Country("UK")

print(math.dname, mathprof.pname, country.cname)

Ausgabe:

Mathematics Mark UK
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Verwandter Artikel - Python Class