Пример
class A:
foo = 1
class B:
foo = 2
class C:
foo = 3
class D(A, B, C):
pass
def collect_foo(cls):
import inspect
foos = []
for c in inspect.getmro(cls):
if hasattr(c, 'foo'):
foos.append(c.foo)
return foos
Теперь collect_foo(D)
возвращает [1, 1, 2, 3]
- 1
удваивается, поскольку D
выводит его из A
. Вопрос - как получить уникальные foo
с. Первое, что мне пришло в голову, это проверка, является ли свойство производным или объявленным в данном классе - возможно ли это? Как это сделать?