Я использую библиотеку для обмена данными между C++, VHDL и SystemVerilog. Он использует кодегенераторы для создания структур данных, содержащих соответствующее поле. Подумайте о структуре данных типа c. Я хочу создать код python, который содержит функции datastructure и чтения/записи, чтобы установить и записать содержимое структуры данных из файла/в файл.Python: переменные базового класса печати
Для этого я пытаюсь написать программу, которая печатает все переменные в базовом классе с обновлениями из подкласса, но без переменных подкласса.
Идея заключается в том, что класс А является фактическим VHDL/SystemVerilog/C++, запись/структура и класс В содержит логику, чтобы сделать обработку и генерировать значения в классе А.
Например:
class A(object):
def __init__(self):
self.asd = "Test string"
self.foo = 123
def write(self):
print self.__dict__
class B(A):
def __init__(self):
A.__init__(self)
self.bar = 456
self.foo += 1
def write(self):
super(B, self).write()
Вызов B.write() должно привести следующее: (Примечание увеличенное значение Foo)
"ASD: Тест String, Foo: 124"
, но вместо этого он дает
"ASD: Test String, бар: 456, Foo: 124".
Есть ли способ получить только переменные базового класса? Я мог бы сравнить базовый словарь с подклассовым словарем и только печатать значения, которые появляются в обоих, но это не похоже на чистый способ.
Как 'B.write()' будет работать, так как 'write' не является методом класса? –
FWIW, вместо того, чтобы выводить класс B из класса A, он может быть более простым и простым, чтобы дать B-объектам объект A в качестве атрибута. –