问题描述
我正在读python c Defining New Types。我不知道,在定义了新类型之后,如何在c端创建新的Noddy实例。例如,创建方法noddy.create_default_noddy
。
我已经尝试过了。但并不幸运。
static PyObject *noddy_createDefaultNoddy(PyObject *self,PyObject *args) {
// yes we can't create an object like this.
auto *noddy = new Noddy;
return (PyObject *)noddy;
}
解决方法
阅读一些代码后。我发现正确的方法是:
static PyObject *noddy_getDefaultNoddy(PyObject *self,PyObject *args) {
Noddy *foo;
foo = (Noddy*)noddyType.tp_alloc(&noddyType,0);
foo->first = Py_BuildValue("%s","first name from c");
assert(foo != nullptr);
return (PyObject*)foo;
}