Python 3 programmaticallyで導入されたEnumクラスを使用する場合、プログラマは与えられた整数のEnumメンバーシップをどのようにチェックするべきですか?Python Enumクラスメンバシップ
明らかに、あなたはちょうどask for forgivenessであることができますが、他には見逃している会員確認機能がありますか?より明示的に言えば、整数値をとり、その値が有効な列挙に対応するかどうかを確認したいと思います。
from enum import Enum
class TestEnum(Enum):
a = 0
b = 1
c = 2
出力:
In [13]: TestEnum(0)
Out[13]: <TestEnum.a: 0>
In [14]: TestEnum(4)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-14-09c663e9e214> in <module>()
----> 1 TestEnum(4)
C:\Anaconda3\lib\enum.py in __call__(cls, value, names, module, qualname, type, start)
239 """
240 if names is None: # simple value lookup
--> 241 return cls.__new__(cls, value)
242 # otherwise, functional API: we're creating a new Enum type
243 return cls._create_(value, names, module=module, qualname=qualname, type=type, start=start)
C:\Anaconda3\lib\enum.py in __new__(cls, value)
474 if member._value_ == value:
475 return member
--> 476 raise ValueError("%r is not a valid %s" % (value, cls.__name__))
477
478 def __repr__(self):
ValueError: 4 is not a valid TestEnum
私の知る限りでは、 'TestEnum'が' enum.IntEnum'から派生している限り、TestEnum .__ members __。values() 'で' 4を試すことができます。 – farsil
@farsil、答えとしてあなたのコメントを入れてください –