私はここの指示に従ってみました、それは私をこのコードに導きました:
import yaml
class Step(yaml.YAMLObject):
yaml_tag = "!step"
def __init__(self, *args, **kwargs):
raise Exception("Intentionally.")
yaml.load("""
--- !step
foo: bar
ham: 42
""")
期待される動作:例外が発生します。しかし、私が観察しているのは、YAMLマークアップがStep
インスタンスになり、それを操作したり、メソッドや属性にアクセスしたり(foo
上記のコードのように)できることです。ドキュメントを読むと、コンストラクターがすべてのキーと値のペアをキーワード引数として呼び出されていることが示唆されているため、間違いを見つけることができません。
基本的に、ドキュメントの例は機能しますが、コンストラクターの実装のためではなく、キーと値のペア(のプロパティMonster
)がオブジェクトのdictを埋めるために使用されるためです。
ここの誰かがそれについて知っていますか?
私はpython3で作業していますが、python2で簡単な評価を行い、同じことを観察しました。
編集
私がやりたかったこと:リンクされた例(ドキュメント)にとどまるために、Monster
sが。name
で始まる場合はB
、の値を2倍にしますac
。