怎么看,如果在列表中存在一定的阶级(How to see if a certain class ex

2019-10-29 07:33发布

我有一个类, user ,即有一个属性metadata

metadata是对象,每个对象具有不同的类,例如列表:

user.metatada = [Employee(), Student(), OtherClass()]

在更新脚本,我需要检查,如果某一类型列表中的存在,就像这样:

if type(Employee()) in user.metadata:
  replace user.metadata[indexOfThatEmployee] with new Employee()
else:
  user.metadata.append(new Employee())

反正是有易检查某种类型列表中的存在?

Answer 1:

得到它了。

test = [Employee()]

if any(isinstance(x, Employee) for x in user.metadata):
    user.metadata = [x for x in user.metadata if not isinstance(x, Employee)] + test
else:
    user.metadata = user.metadata + test

因此,这将检查是否存在在为Employee类的一个实例列表中的对象,如果是这样,筛选现有Employee对象的列表,并加入新的一个,如果它不存在,只是它加入。



文章来源: How to see if a certain class exists in a list