Mau*_*ice 5 python inheritance code-generation vhdl system-verilog
我正在使用一个库在 C++、VHDL 和 SystemVerilog 之间共享数据。它使用代码生成器来构建包含适当字段的数据结构。想想 ac 类型的数据结构。我想生成包含数据结构和读/写函数的 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()
Run Code Online (Sandbox Code Playgroud)
调用 B.write() 应产生以下结果:(注意 foo 的递增值)
“asd:测试字符串,foo:124”
但它却产生了
“asd:测试字符串,bar:456,foo:124”。
有没有办法只获取基类变量?我可以将基本字典与子类字典进行比较,并只打印两者中出现的值,但这感觉不是一个干净的方法。
基类变量和子类变量之间没有区别。根据定义,继承是一种 is-a 关系;基类中定义的所有内容都如同在子类中定义的一样。
同样,您在代码中任何其他点在实例上定义的任何内容也将出现在字典中;Python 不限制您在类的其他地方甚至从外部添加新的实例变量。
做你想做的事情的唯一方法是在输入时记录按键A.__init__。
| 归档时间: |
|
| 查看次数: |
1896 次 |
| 最近记录: |