我正在开发一个需要在C中创建Python类的项目。据我所知,我只看过他们静态编写类的示例,例如
static PyTypeObject myclassType = {
PyVarObject_HEAD_INIT(NULL, 0)
"mymodule.myclass", /* tp_name */
sizeof(myclass), /* tp_basicsize */
// etc.
}
但是在项目中,我需要动态创建类。 E.g。
someclass = calloc(sizeof(PyTypeObject));
someclass.tp_methods = malloc(...);
成员和方法都依赖于运行时。
那里有关于如何做的好例子吗?我关心的问题包括,何时需要解除分配tp_members或tp_name等。
答案 0 :(得分:0)
您应该提供更多背景信息。你想解决什么问题,特别是?
例如,如果要创建附加行为的类,则已经support in Python用于加载和调用C代码。您可以使用它,并在python中创建类接口并加载C库作为模块初始化代码的一部分。
或者,如果您基于规范生成代码,则可能更容易在python中解析规范并直接生成适当的代码。 (Python是pretty good parsing language。; - )
如果您尝试在Python中嵌入C,可以考虑使用embedding a Python interpreter into your C。这将使您能够设置C代码,然后运行python脚本,并回调C。