La classe Python imbriquée doit accéder à la variable dans la classe englobante

J'ai vu quelques "solutions" pour cela, mais la solution à chaque fois semble être: "Ne pas utiliser les classes imbriquées, définir les classes à l'extérieur et ensuite de les utiliser normalement". Je n'aime pas cette réponse, car il ignore la principale raison que j'ai choisi classes imbriquées, qui est, de disposer d'un pool de constantes (associée à la classe de base accessible à tous les sous-instances de classes qui sont créés.

Voici un exemple de code:

class ParentClass:

    constant_pool = []
    children = []

    def __init__(self, stream):
        self.constant_pool = ConstantPool(stream)
        child_count = stream.read_ui16()
        for i in range(0, child_count):
            children.append(ChildClass(stream))

    class ChildClass:

        name = None

        def __init__(self, stream):
            idx = stream.read_ui16()
            self.name = constant_pool[idx]

Toutes les classes sont passées à un seul paramètre, qui est une coutume bitstream classe. Mon intention est d'avoir une solution qui ne nécessite pas de moi de lire le idx valeur pour ChildClass tout en restant dans la Myclass. Tous les enfants de la classe de flux de lecture devrait être fait dans la classe enfant.

Cet exemple est simplifiée. La constante de la piscine n'est pas la seule variable j'ai besoin d'disponibles pour toutes les sous-classes. Idx variable n'est pas la seule chose à lire à partir du lecteur de flux.

Est-ce encore possible en python? Il n'y a pas moyen d'avoir accès au parent?

source d'informationauteur Gerald Thibault