次は、Python 3.4.7、ruamel.yamlバージョン0.15.35で、私のために働いていません。ruamel.yamlは列挙型をエンコードできますか?
Neutral: <Speed.Neutral: 1>
しかし.dump()
が提起:私は完全に合理的なrepr
を取得
import sys
import enum
import ruamel.yaml
from ruamel.yaml import yaml_object
yaml = ruamel.yaml.YAML()
@yaml_object(yaml)
class Speed(enum.IntEnum):
Reverse = 0
Neutral = 1
Low = 2
Drive = 3
Park = 999
print("Neutral:", repr(Speed.Neutral))
yaml.dump(Speed.Neutral, sys.stdout)
:
ruamel.yaml.representer.RepresenterError: cannot represent an object: <enum 'Speed'>
enum
年代がサポートされていない場合、私はを拡張するために行うことができます何かがあります私が使用しているクラス(または私が作成したサブクラスenum.IntEnum
)。ダンダー法?
これは回避策ですが、型情報が失われます。これは、int型をエンコードするだけです。 YAMLは他のオブジェクトの型と値を保持することができます。それは列挙型のためにそうすることができるように感じる。 – pourhaus