Как я могу получить все имена свойств класса Python , включая свойства, унаследованные от суперклассов ?
class A(object):
def getX(self):
return "X"
x = property(getX)
a = A()
a.x
'X'
class B(A):
y = 10
b = B()
b.x
'X'
a.__class__.__dict__.items()
[('__module__', '__main__'), ('getX', <function getX at 0xf05500>), ('__dict__', <attribute '__dict__' of 'A' objects>), ('x', <property object at 0x114bba8>), ('__weakref__', <attribute '__weakref__' of 'A' objects>), ('__doc__', None)]
b.__class__.__dict__.items()
[('y', 10), ('__module__', '__main__'), ('__doc__', None)]
Как я могу получить доступ к свойствам через b?
Нужно: «Дайте мне список всех свойств имен из b, включая имена, унаследованные от a!»
>>> [q for q in a.__class__.__dict__.items() if type(q[1]) == property]
[('x', <property object at 0x114bba8>)]
>>> [q for q in b.__class__.__dict__.items() if type(q[1]) == property]
[]
Я хочу получить результаты первого (а), при работе со вторым (б), но только текущий может получить пустой список. Это также должно работать для другого C, унаследованного от B.