Python 如何在另一个模块中从工厂生成普通类?

Python 如何在另一个模块中从工厂生成普通类?,python,Python,[第二天]我明白了-我甚至不知道该问什么问题 解决方案是在解析.c和'h文件时,使用我构建的结构类字典扩展用户模块的golbals字典。 globals.updateStructures.struct_dict是实例化派生类而无需跳转的全部功能 谢谢你的帮助,无论是在这里的评论还是通过电子邮件,这确实让我走上了正轨 原始问题如下 我对Python和堆栈溢出还不熟悉,我在对象的范围界定方面有点困难 我正在制作一个自动测试框架,通过USB连接到某台机器,然后发出命令,读取机器传输的变量和数据,并对其

[第二天]我明白了-我甚至不知道该问什么问题

解决方案是在解析.c和'h文件时,使用我构建的结构类字典扩展用户模块的golbals字典。 globals.updateStructures.struct_dict是实例化派生类而无需跳转的全部功能

谢谢你的帮助,无论是在这里的评论还是通过电子邮件,这确实让我走上了正轨

原始问题如下

我对Python和堆栈溢出还不熟悉,我在对象的范围界定方面有点困难

我正在制作一个自动测试框架,通过USB连接到某台机器,然后发出命令,读取机器传输的变量和数据,并对其作出反应

为了便于编写脚本,我编写了一个C/C++预处理器,它将机器代码和生成的映射文件的所有C源代码都过滤掉,以便测试人员可以使用C中的定义、枚举以及查询变量

所有这些都可以很好地工作,但要非常有用,我需要能够为源代码中定义的每种类型的结构生成一个类,这样当我的测试代码读取原始数据并返回bytearray时,用户可以执行以下操作

myStruct = SomeStructClass(received_bytearray)
process(myStruct.structure_member_name_from_C_source)
我已经完成了解析,可以生成类了,但是我最终得到了一个非常笨拙的{name:class}字典

我最终导入了字典,并要求编写测试脚本的用户做一些奇怪的事情,例如:

from Structures import struct_dict
C_struct_name = struct_dict["C_struct_name"]
myStruct = C_struct_name(initial_data)
所以我的问题是:

如何使从结构模块的简单导入定义在导入脚本的全局范围内的结构中创建的新结构

换言之,我可以自动完成前面代码片段的第二行吗


提前谢谢

我想我可能遗漏了一些东西:如果您在某个文件中放置了类SomeStructClass,比如您的Structures模块,为什么不导入它呢?从结构导入SomeStructClass?现在,如果这些类有很多不同的变体,可以从Structures import*开始。一般来说,Python不赞成使用from foo import*,但在某些情况下它是合理的,这可能是其中之一。尝试将结构文件中唯一导出的名称设置为类名,我认为这是干净且可接受的。谢谢您的评论。实际上,即使在我的结构模块中,我也不知道如何自动执行C_struct_name=struct_dict[C_struct_name]。我尝试编写源代码行并对其求值,但似乎C_stuct_name变量的范围仅限于我正在求值的字符串。