の配列がある場合
g = ['hi']
それで
'hi' in g
戻りますTrue
。
インスタンス化されたクラスを配列に入れるとどうなりますか。
g.append(MyClass())
配列にこのクラスのオブジェクトが含まれているかどうかを確認するにはどうすればよいですか。
MyClass in g
戻り値False
の配列がある場合
g = ['hi']
それで
'hi' in g
戻りますTrue
。
インスタンス化されたクラスを配列に入れるとどうなりますか。
g.append(MyClass())
配列にこのクラスのオブジェクトが含まれているかどうかを確認するにはどうすればよいですか。
MyClass in g
戻り値False
とを使用isinstance()
しany()
ます。
In [95]: class A:pass
In [96]: lis=[A()]
In [97]: any(isinstance(x,A) for x in lis)
Out[97]: True
In [98]: lis=[1,2,3]
In [99]: any(isinstance(x,A) for x in lis)
Out[99]: False
これを試して:
MyClass in [type(x) for x in g]
これは、正確なタイプがMyClass
;であるオブジェクトのみを検索します。から派生したクラスのオブジェクトは見つかりませんMyClass
。それを行うには、を利用する他の回答のいずれかを試してくださいisinstance()
。
例:
>>> class Foo(object): pass
...
>>> g = [1, 2, Foo(), 4]
>>> g
[1, 2, <__main__.Foo object at 0x7f59552ef750>, 4]
>>> Foo in [type(x) for x in g]
True
any(isinstance(x, MyClass) for x in g)