Я вижу в docs, что я могу построить значение кортежа с помощью int (с указанием «i»). Мне нужно сделать кортеж с bool, например. (True, 10)
. Как я могу сделать такой кортеж с bool (какой спецификатор нужен)?Py_BuildValue: сделать кортеж с bool?
4
A
ответ
9
Для этого преобразования нет предопределенного символа формата, но тривиально имитировать его, вставив в кортеж объект Py_True
или Py_False
. Например:
int i = ...;
bool b = ...;
PyObject *tuple_with_bool = Py_BuildValue("Oi", b ? Py_True: Py_False, i);
Другой вариант заключается в использовании PyBool_FromLong сделать преобразование. В этом случае, не забудьте использовать формат N
для учета PyBool_FromLong
возвращает новую ссылку:
PyObject *tuple_with_bool = Py_BuildValue("Ni", PyBool_FromLong(b), i);
Weird прозвище, но помогло. Tks. – Prog1020