解释定义如下:

我定义了一个新的Python类型,名为“Ex1”。

typedef struct {
    PyObject_HEAD
    PyObject * int_id;
    int * value;

} Ex1;

考虑到这种类型,并使用Python解释生成并验证的所有适当方法(效果很好)。我希望能够从C++后端创建新的Ex1类型的python对象。我需要的典型结构是:
int main
{
     // Create Ex1 Object.
     Ex1 Example;

     // Call PythonC-API method to include Ex1 Object into the python interpreter.
     // ¿Any function-method from Python API to perform this task?
}

最佳答案

实际上,我设法使用python docs解决了此问题:

https://docs.python.org/2/extending/newtypes.html

首先,有必要定义适当的方法,如python docs(1)中所述。假设创建的PyType具有两个属性(varp1和varp2):

PyObject * create_Ex1(vartype1 var1, vartype2 var2)
{
    PyObject * pInst = PyObject_CallObject((PyObject *)&Ex1Type, NULL);
    ((Ex1*)pInst)->varp1 = var1;
    ((Ex1*)pInst)->varp2 = var2;
    return pInst;
}


static int Ex1_init(Ex1 *self, PyObject *args, PyObject *kwds)
{
    // On init return -1 if error
    self->varp1= NULL;
    self->varp2= NULL;
    return 0;
};

如python docs(1)中所述,这是在静态PyTypeObject Ex1Type上定义的。

然后使用此行创建和初始化对象:
PyObject* Ex1_obj = create_Ex1(var1, var2);

10-06 14:56
查看更多