Я пытаюсь вычислить значение экземпляра в 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. расчет собственного экземпляра.
Возможно ли это? Есть другое решение для этого?