具有动态siz的Python Cextension类

2022-01-19 00:59:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试编写包含python类的C扩展。你知道吗

这个类将一个文件名作为构造函数的参数fname,然后将该文件加载到内存并存储为配置文件。你知道吗

以下是我所拥有的:

typedef struct {
    PyObject_HEAD
    XmlConfig m_cfg;
} PyAgent;

static int PyAgent_init(PyAgent *self, PyObject *args) {
    const char *fname;
    if (!PyArg_ParseTuple(args, "s", &fname)) {
    return NULL;
    }
    self->m_cfg.Load(fname);
    return 0;
}

static PyTypeObject PyAgentType = {
   PyObject_HEAD_INIT(NULL)
   0,                                            /* ob_size */
   "classify.Agent",                             /* tp_name */
   ...
}
...

当我尝试加载文件时,出现了分段错误。据我所知,这是因为PyAgent struct的对象大小由于文件的内存分配而增加。你知道吗

我试过使用PyObject_VAR_HEAD宏,但没用。你知道吗

你能给出一个线索或类似的例子吗?你知道吗