2
如何使用Python C-API实现__nonzero__
?应如何使用Python C-API实现__nonzero__?
我问的原因是我试图修复一些Python C-API代码中的错误。有一个__nonzero__
方法加入到方法表如下:
static PyMethodDef PyFoo_methods[] = {
...
{ (char*)"__nonzero__", (PyCFunction)_Foo_nonzero, METH_KEYWORDS|METH_VARARGS, NULL },
...
};
PyTypeObject PyFoo_Type = {
PyObject_HEAD_INIT(NULL),
0,
....
(struct PyMethodDef*)PyFoo_methods, /* tp_methods */
...
};
然而,当我测试代码,应用于Foo
对象总是返回True
bool()
; _Foo_nonzero
函数永远不会被调用。
代码有什么问题?