0

私はC++クラスをPythonにバインドしていて、以前の問題に対する興味深い解決策に到達しました。残念ながら、これは別の質問につながり、簡単な答えもないようです。

各関数を「呼び出し可能な」PyObjectにラップしています。呼び出し可能にするのは、呼び出し関数を定義することです(C側ではこれはPyTypeObjectのtp_callメソッドです)。

tp_callは、引数リストとして(PyObject *、PyObject *、PyObject *)を受け入れるだけの三項関数を使用しているようです。
ここで問題となるのは、この関数が引数(PyObject * self、PyObject * args)を受け取るPyCFunctionの代わりになる必要があるということです。Python側ではこれを簡単に行うことができますが、C側では、バイナリ関数が必要なときに三項関数が必要になるようです。呼び出し可能な関数を単純にするために、PyCFunctionポインターを使用するか、それをカプセル化する方法はありますか?

4

1 に答える 1

3

3番目PyObject*はクワーグです。ただ...それらを渡さないラッパーを書いてください。TypeError何かが含まれている場合のレイズはオプションです。

于 2011-06-02T23:42:22.873 に答える