【发布时间】:2016-02-12 10:40:30
【问题描述】:
我正在使用一个库在 C++、VHDL 和 SystemVerilog 之间共享数据。它使用代码生成器来构建包含适当字段的数据结构。想想一个 c 类型的数据结构。我想生成包含数据结构和读/写函数的python代码,以设置数据结构的内容并将其从/写入文件。
为此,我正在尝试编写一个程序来打印基类中的所有变量,其中包含来自子类的更新,但没有子类变量。
想法是 A 类是实际的 VHDL/SystemVerilog/C++ 记录/结构,B 类包含在 A 类中进行处理和生成值的逻辑。
例如:
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: 测试字符串, foo: 124"
但它会产生
"asd: 测试字符串, bar: 456, foo: 124".
有没有办法只获取基类变量?我可以将基本字典与子类字典进行比较,只打印两者中出现的值,但这感觉不是一种干净的方式。
【问题讨论】:
-
B.write()将如何工作,因为write不是类方法? -
FWIW,与其从 A 类派生 B 类,不如给 B 对象一个 A 对象作为属性可能更简洁、更简单。
标签: python inheritance vhdl code-generation system-verilog