2014-01-19 5 views
4

Я вижу в docs, что я могу построить значение кортежа с помощью int (с указанием «i»). Мне нужно сделать кортеж с bool, например. (True, 10). Как я могу сделать такой кортеж с bool (какой спецификатор нужен)?Py_BuildValue: сделать кортеж с bool?

ответ

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); 
+0

Weird прозвище, но помогло. Tks. – Prog1020

 Смежные вопросы

  • Нет связанных вопросов^_^