これは、Pythonドキュメント(http://docs.python.org/extending/extending.html)から簡単な例である:私は関数に追加のブール・パラメータを渡したい場合はブール値をPython C拡張に渡す「正しい」方法は何ですか?
static PyObject *
spam_system(PyObject *self, PyObject *args)
{
const char *command;
int sts;
if (!PyArg_ParseTuple(args, "s", &command))
return NULL;
sts = system(command);
return Py_BuildValue("i", sts);
}
- 何それを行う "正しい"方法は?
PyArg_ParseTuple()に渡すブールオプションがないようです。 (整数
- は、整数を読み、(ブール値がintのサブクラスであるとして)値だけを使用し、PyBool_Checkを呼び出します。だから私は、次の考え)それがboolであることを確認するには
- 多分、変数の型を取得し、その真理値を得る方法があります(空の配列は偽であるなど)。これはPython関数が通常行うことです。
これらのいずれかが好ましいですか?その他のオプション?
私はこれを使って、Cで変数を 'int'(' bool'ではなく)として宣言する必要があることを発見しました。あるいは、複数のboolを使用する場合、正しく設定されません(おそらく、 'bool'と' int'の間のサイズの違いに関する問題)。 – szmoore
@szmooreここでは、応答に整数を使用すると記載されています。 – kevr
はい、そうですが、Cでは 'int'と' bool'を同じ意味で使うことができます。この場合はできません。私はそれが超流動性の場合、私のコメントを削除することができます。 – szmoore