有关在C中编写动态创建的Python类的任何建议

时间:2016-01-31 18:05:58

标签: python python-3.x cpython

我正在开发一个需要在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等。

1 个答案:

答案 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。