実行時にYAMLファイルの値を読み込んで列挙型を作成したいと考えています。だから私はこれを持っています:Pythonでカスタム値を持つ列挙型を動的に作成しますか?
# Fetch the values
v = {'foo':42, 'bar':24}
# Create the enum
e = type('Enum',(), v)
適切な方法はありますか?私はtype
が非常にきちんとした解決策ではないと感じる。
実行時にYAMLファイルの値を読み込んで列挙型を作成したいと考えています。だから私はこれを持っています:Pythonでカスタム値を持つ列挙型を動的に作成しますか?
# Fetch the values
v = {'foo':42, 'bar':24}
# Create the enum
e = type('Enum',(), v)
適切な方法はありますか?私はtype
が非常にきちんとした解決策ではないと感じる。
あなたはEnum
functional APIを使用して、新しい列挙型を作成することがあります。
In [1]: import enum
In [2]: DynamicEnum = enum.Enum('DynamicEnum', {'foo':42, 'bar':24})
In [3]: type(DynamicEnum)
Out[3]: enum.EnumMeta
In [4]: DynamicEnum.foo
Out[4]: <DynamicEnum.foo: 42>
In [5]: DynamicEnum.bar
Out[5]: <DynamicEnum.bar: 24>
In [6]: list(DynamicEnum)
Out[6]: [<DynamicEnum.foo: 42>, <DynamicEnum.bar: 24>]
私は私たちが'class MyEnum(IntEnum):_list = [" A "、" B "、" C "]' – PascalVKooten
@PascalvKooten '{name:indexのインデックス、列挙する名前(the_list) } '。それはダイナミック(それを調べていない)では動作しませんが、静的な場合は自動的に動作します。 https://repl.it/@altendky/SevereGiftedDuckbillcat – altendky
私はなぜあなたの 'Enum'が持つ' e.foo'と 'e.bar'割り当てられ、このような奇妙な値を持つ属性があり、非常によく分かりません。 「Enum」ではない! – Nhor
@Nhorそれでは何ですか?私は 'typedef enum {ソーダ= 3423、花= 5827、水= 999} articles_t;のようないくつかの列挙型があるCライブラリからラッパーを書いています – nowox
大変申し訳ありません私の悪い – Nhor