Python で列挙型をシミュレートする必要があり、次のようなクラスを記述して実行しました。
class Spam(Enum):
k = 3
EGGS = 0
HAM = 1
BAKEDBEANS = 2
ここで、次の構文を使用して、特定の Enum 派生クラスに対して有効な選択である定数があるかどうかをテストしたいと思います。
if (x in Foo):
print("seems legit")
__contains__
したがって、次のようにメソッドをオーバーライドする「Enum」基本クラスを作成しようとしました。
class Enum:
"""
Simulates an enum.
"""
k = 0 # overwrite in subclass with number of constants
@classmethod
def __contains__(cls, x):
"""
Test for valid enum constant x:
x in Enum
"""
return (x in range(cls.k))
ただし、in
クラスでキーワードを使用すると (上記の例のように)、次のエラーが発生します。
TypeError: argument of type 'type' is not iterable
どうして?どうにかして必要なシンタックス シュガーを取得できますか?