Hay varias formas de hacer esto y depende de como definas cual duplicado vas a tomar (el primero? el ultimo?), preservar el orden es necesario?, siempre debe de dar el mismo resultado?
Aquí un ejemplo donde, siempre da el mismo resultado, toma el primero que encuentra y preserva el orden en que van apareciendo.
Código Python:
Ver originalclass A:
color = "negro"
class B:
color = "negro"
class C:
color = "blanco"
L = [A, B, C]
s = set()
NL = []
for X in L:
if X.color not in s:
NL.append(X)
s.add(X.color)
print NL
# [A, C]