Вложенному классу Python требуется доступ к переменной во включающем классе

Я видел несколько «решений» для этого, но решение каждый раз кажется таким: «Не используйте вложенные классы, определите классы снаружи, а затем используйте их как обычно ". Мне не нравится этот ответ, потому что он игнорирует основную причину, по которой я выбрал вложенные классы, а именно наличие пула констант (связанных с базовым классом), доступного для всех созданных экземпляров подкласса.

Здесь это пример кода:

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]

Всем классам передается один параметр, который является настраиваемым классом битового потока. Я намерен найти решение, которое не требует от меня чтения значения idx для ChildClass, пока он еще находится в ParentClass. Все чтение потока дочернего класса должно выполняться в дочернем классе.

Этот пример слишком упрощен. Постоянный пул - не единственная переменная, которая нужна мне для всех подклассов. Переменная idx - не единственное, что читается из программы чтения потока.

Возможно ли это вообще в python? Нет возможности получить доступ к информации о родителях?

11
задан Mr_and_Mrs_D 27 April 2015 в 20:19
поделиться