2
__nonzero__
はPython C-APIを使用してどのように実装する必要がありますか?__nonzero__はPython C-APIを使用してどのように実装する必要がありますか?
私はいくつかの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 */
...
};
しかし、私は、コードをテストする場合、bool()
は常にTrue
を返すFoo
オブジェクトに適用されます。 _Foo_nonzero
関数は呼び出されません。
コードに問題がありますか?