解释定义如下:
我定义了一个新的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);