Использование repeat: expr _index в экземпляре Kaitai Struct, вычисленное значение, использование неопределенной переменной в функции python - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь вычислить значение экземпляра в Kaitai, для чего мне потребуется доступ к _index. Сгенерированный код python, определяет имя локального счетчика i в чтении l oop и пытается также использовать переменную с именем i в определении функции для значения экземпляра. Однако, что было бы интересно, так это то, что l oop _index каким-то образом передается в значение экземпляра.

Ниже кода фрагмента:

In kaitai.ksy

 type:
      switch-on: f_type
      cases:

 instances:
  f_type:
    value: 'f_types_id.substring(_index, _index+1)' nter code here

В python выдает следующее:

При чтении l oop все в порядке

for i in range(self.total_flags):
                _on = self.f_type
                if _on == u"E":

Однако, внутри определения значения:

@property
    def f_type(self):
        if hasattr(self, '_m_f_type'):
            return self._m_f_type if hasattr(self, '_m_f_type') else None

        self._m_f_type = self.f_types_id[i:(i + 1)]
        return self._m_f_type if hasattr(self, '_m_f_type') else None

В котором отсутствует определение или какое-либо имя i.

Я ожидаю, что вычисляемый экземпляр получит индекс, используемый на том же уровне, который вызывается / используется, если только внутри него нет другого l oop. расчет собственного экземпляра.

Возможно ли это? Есть другое решение для этого?

...