クラスのための方法、およびは次のようなクラスを書くことでそれをやりました以下の構文を有する由来クラス:オーバーライド__contains__の私はPythonで列挙型をシミュレートする必要が
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))
:
if (x in Foo):
print("seems legit")
。したがって、私はこのような__contains__
メソッドをオーバーライドする場合、「列挙」ベースクラスを作成しようとしました
(上記の例のように)クラスにin
キーワードを使用している場合しかし、私はエラーを取得する:
TypeError: argument of type 'type' is not iterable
なぜ?どうにか私が望む統語砂糖を手に入れられますか?
私はコードがために正常に動作することをclarifiyingコメントだと思います: 場合x in Foo(): print( '正当なものと思われます) 質問と回答の両方を理解しやすくします。 タイプ(Foo())はFooですが、タイプ(Foo)はメタクラスです。 –