Возможно, вы могли бы уточнить, что вы ищете немного дальше?
На данный момент ваше описание вообще не описывает Python.Давайте предположим, что в вашем примере A, B и C являются именами классов:
class A(object) :
... def __init__(self) :
... self.x = 1
class B(A) :
... def __init__(self) :
... A.__init__(self)
... self.y = 1
Тогда экземпляр времени выполнения может быть создан как:
b = B()
Если вы посмотрите насловарь объекта времени выполнения, то он не имеет различий между своими переменными и переменными, принадлежащими к его суперклассу.Так, например: dir (b)
[ ... snip lots of double-underscores ... , 'x', 'y']
Итак, прямой ответ на ваш вопрос заключается в том, что он уже работает так, но я подозреваю, что это не очень полезно для вас.Что не отображается, так это методы, поскольку они являются записями в пространстве имен класса, в то время как переменные находятся в пространстве имен объекта.Если вы хотите найти методы в суперклассах, используйте вызов mro (), как описано в предыдущем ответе, а затем просмотрите пространства имен классов в списке.
Пока я искал более простые способы сделать этоСериализация JSON Я нашел несколько интересных вещей в модуле pickle.Одно из предложений заключается в том, что вы, возможно, захотите выбирать объекты, а не писать собственные, чтобы пересечь иерархию.Вывод pickle является потоком ASCII, и вам может быть проще преобразовать его обратно в JSON.Есть некоторые отправные точки в PEP 307.
Другое предложение - взглянуть на метод __reduce__
, попробовать его на объектах, которые вы хотите сериализовать, поскольку это может быть тем, что вы ищете.