经过几年的中断后,我才重新开始编码,我正在尝试以一种让我在特定表单级别或整个子树上抓取和执行操作的方式对多层静态表单进行建模。
示例表单层次结构:
- 我的表格
- 问题 1
- 第1部分
- 问题 1.1
- 第2部分
- 问题 2.1
- 第 1 部分
- 问题 2.1.1
- 问题 2.1.2
- 问题2
每个问题将具有多个属性(问题文本、是否为必填字段等),并且问题可以位于层次结构的任何级别。
我希望能够做这样的事情:
>>> MyForm.getQuestionObjects()
[Question1, Question1_1, Question2_1, Question2_1_1, Question2_1_2, Question2]
>>> MyForm.Part2.getQuestionObjects()
[Question2_1, Question2_1_1, Question2_1_2]
和/或类似的东西:
>>> # Get questions (return class members)
>>> MyForm.SubPart1.getQuestions()
(('2.1.1 text', otherAttributes), ('2.1.2 text', otherAttributes))
>>> # Get questions -- but replace an attribute on 2.1.2
>>> MyForm.Part2.getQuestions(replace_attr('Question_2_1_2', 'text', 'New text'))
(('2.1.1 text', otherAttributes), ('New text', otherAttributes))
我一直在尝试使用嵌套/内部类来做到这一点,这是一个令人头疼的问题,并且在 python 中没有得到很好的支持。但即使我能找到使用嵌套类的解决方案,我仍然想知道是否有更好的方法将此表单信息存储在某个地方,以便非编码人员更容易编辑(可能是纯文本模板),然后加载运行时的数据,因为它是静态的,我经常需要它在内存中。表单数据的更新不会超过每月一次。无论我如何存储数据,我都想找出一个好的数据结构来表示、遍历和操作它。
- 有没有办法制作这样的分层属性对象?
- 我可以做类似多维命名元组的事情吗?
- 还有其他想法吗?
感谢您的任何评论。