如果我有一个
数组g = ['hi']
然后
'hi' in g
返回True
。
如果我将实例化的类放入数组中该怎么办?
g.append(MyClass())
如何查找数组是否包含此类的对象。
MyClass in g
返回False
答案 0 :(得分:3)
使用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
答案 1 :(得分:1)
试试这个:
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
答案 2 :(得分:1)
any(isinstance(x, MyClass) for x in g)