Как узнать, существует ли определенный класс в списке - PullRequest
0 голосов
/ 24 мая 2018

У меня есть класс, 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())

Есть ли способ легко проверить, существует ли определенный тип в списке?

1 Ответ

0 голосов
/ 24 мая 2018

Понял.

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 и добавьтеновый, если он не существует, просто добавьте его.

...