我无法在PyYAML文档中找到如何执行此操作.我想表示我在YAML中定义的python类,如果没有在YAML中指定,则在构造函数中为参数赋予默认值.例如:
>>> class Test(yaml.YAMLObject):
... yaml_tag = u"!Test"
... def __init__(self, foo, bar=3):
... self.foo = foo
... self.bar = bar
... def __repr__(self):
... return "%s(foo=%r, bar=%r)" % (self.__class__.__name__, self.foo, self.bar)
...
>>> yaml.load("""
... --- !Test
... foo: 5
... """)
Traceback (most recent call last):
File "", line 4, in
File "", line 7, in __repr__
AttributeError: 'Test' object has no attribute 'bar'
我希望它会创建一个bar = 3的Test对象,但我猜它在创建对象时会绕过我的构造函数.如果我在YAML中包含bar的映射,那么一切都按预期工作:
>>> yaml.load("""
... --- !Test
... foo: 5
... bar: 42
... """)
Test(foo=5, bar=42)
有谁知道我怎么能使用默认值?