我一直在尝试使用YAML,因为我喜欢它的可读性。
然而,我对于放入组件/处理组合的最佳方式感到有些困惑。
让我们说这是我试图复制的课程:
basicai = aggressiveAI()
fightercomponent = fighter(strength=10, dexterity=5, death=dramaticdeath())
orc = Object(name='orc', hp=100, fighter=fightercomponent, ai=basicai)
在YAML中做这样的事情的最好方法是什么?
大多数情况下,我希望能够最终找到一长串特定命名的组件对象和主要对象。
答案 0 :(得分:1)
假设你有适当的构造函数和表示者来创建对象,你可以这样做:
- !AggresiveAI &basicai
- !Fighter &fightercomponent
strength: 10
dexterity: 5
death: dramaticdeath
- !Object
name: orc
hp: 100
fighter: *fightercomponent
ai: *basicai
唯一有问题的是你对dramaticdeath
的函数调用,因为YAML存储对象而不是函数调用。因此,在类__init__
的{{1}}方法中,从字符串到函数进行查找
顶级不必是一个列表,你可以例如使顶层映射。在使用别名之前,请确保定义锚点。