以导出类CObject为例
struct CObject
{
void* m_pData;
PyObject* m_pObj;
void fun(){printf("CObject::fun()");};
};
1,定义一个PY结构
struct PY_CObject
{
PyObject_HEAD;
CObject* obj;
};
2,定义构造、初始化、析构函数
static PyObject* PY_CObject_new(PyTypeObject* type,PyObject*,PyObject*)
{
PY_CObject* self=(PY_CObject*)type->tp_alloc(type,0);
self->obj=NULL;
return self;
}
static int PY_CObject_init(PY_CObject*s,PyObject*,PyObject*)
{
s->obj=new CObject;
s->obj->m_pObj=s;
return 0;
}
static void PY_CObject_dealloc(PY_CObject* s);
{
s->ob_type->tp_free(s);
delete s->obj;
s->obj=NULL;