Classe imbriquée en Python

Manav Narula 18 juillet 2021
Classe imbriquée en Python

Les classes contiennent différents membres de données et fonctions et nous permettent de créer des objets pour accéder à ces membres.

Python, en tant que langage de programmation orienté objet, possède de nombreux objets de ce type de différentes classes. En Python, nous avons un important constructeur appelé __init__, qui est appelé chaque fois qu’une instance de la classe est créée, et nous avons également le mot-clé self pour faire référence à l’instance courante de la classe.

Une classe imbriquée (également appelée classe interne) est définie à l’intérieur d’une autre classe. Elle est très couramment utilisée dans tous les langages de programmation orientés objet et peut présenter de nombreux avantages. Elle n’améliore pas le temps d’exécution, mais peut aider à la lisibilité et à la maintenance du programme en regroupant des classes connexes et en cachant la classe imbriquée du monde extérieur.

Le code suivant montre une structure très simple d’une classe imbriquée :

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)

Production :

Mathematics
Mark

Notez que nous ne pouvons pas accéder directement à la classe interne. Nous créons son objet en utilisant le format outer.inner.

Nous pouvons accéder à la classe imbriquée dans la classe extérieure mais pas l’inverse. Pour accéder à la classe imbriquée dans la classe externe, nous pouvons utiliser soit le format outer.inner, soit le mot-clé self.

Dans le code ci-dessous, nous apportons quelques modifications aux classes ci-dessus et accédons à une fonction de la classe imbriquée en utilisant la classe parente :

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

Production :

Mathematics From Inner Class

Nous pouvons également avoir plusieurs classes imbriquées en Python. De telles situations sont appelées plusieurs classes imbriquées avec une ou plusieurs classes internes.

Il peut également y avoir des cas où nous avons une classe imbriquée dans une classe imbriquée, et cela s’appelle une classe imbriquée à plusieurs niveaux.

Le code suivant montre un exemple très simple de classe imbriquée à plusieurs niveaux.

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)

Production :

Mathematics Mark UK
Auteur: Manav Narula
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

Article connexe - Python Class