No he podido averiguar cómo hacerlo en la documentación de PyYAML. Quiero representar las clases de Python que he definido en YAML, y tengo un valor predeterminado dado a un parámetro en el constructor si no está especificado en el YAML. Por ejemplo:Parámetros de constructor predeterminados en pyyaml
>>> 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 "<stdin>", line 4, in <module>
File "<stdin>", line 7, in __repr__
AttributeError: 'Test' object has no attribute 'bar'
que esperaba que crearía un objeto de prueba con barra = 3, pero supongo que no pasa por mi constructor cuando se crea el objeto. Si incluyo una asignación para bar en el YAML, todo funciona como se esperaba:
>>> yaml.load("""
... --- !Test
... foo: 5
... bar: 42
... """)
Test(foo=5, bar=42)
¿Alguien sabe cómo puedo tener que usar un valor por defecto?