メタクラスを使って数値定義不要のEnumを作る
https://docs.google.com/presentation/d/11QQ7yGf_9lF3Uy5JjrmZIQOrWvInZ7PkPvwt3UEpeyM/edit#slide=id.gf77837ba43_0_151
ImplicitEnumクラスを継承したEnumは数値定義不要とする
class ImplicitEnum(Enum, metaclass=ImplicitEnumMeta):
class ImplicitEnumMeta(EnumMeta):
EnumMetaはenum.Enumの実装参照(EnumTypeと同じもの)
__prepare__でクラスの名前空間を返す
EnumDefaultDictを返す
class EnumDefaultDict(_EnumDict):
__missing__名前空間のdictの中にkeyの名前がなかったら1とする
メンバーの値を全部同じ1にする実装
なので、定義したEnumをlistに渡すとバグる(数値定義不要のEnumでは、そういう使い方を想定していないのだと思う)