如何从Python访问C全局变量?

你有一个用SWIG( http://swig.org/ )编写的python模块,名为“swigMod1”,以及.i扩展名文件中名为“int A1 = 0;”的全局C变量。 在python环境下键入“import swigMod1”和“swigMod1.cvar.A1”,导入新扩展并允许您在执行期间读取和修改A1。

如果您运行两个swig模块,则语法如“swigMod1.cvar.A1 = swigMod2.cvar.A2”将变量A1(在第一个模块中)复制到A2(在第二个模块中)。

这是我项目中非常有用的function,我想在下一个考虑的案例中保留它。

您现在有另一个名为“cMod”的扩展,这次是通过经典的C API编写的( https://docs.python.org/2.7/extending/extending.html# )。 在源代码中再次出现一个C全局变量(“int B = 1;”),并且您希望像之前的示例一样访问它,但输入“cMod.cvar.B” 不起作用,因为它只是SWIGfunction。

是否有可能获得像“cMod.cvar.B”和“swigModule.cvar.A1 = cMod.cvar.B”这样的结果?

请注意我是如何仅仅为了简单而声明整数,但在实践中我面对其他类型,我想找到一个通用的解决方案。 我也省略了正确的检查以避免不良影响。