Python C API布尔对象

时间:2015-02-18 05:42:22

标签: python c++ python-c-api python-c-extension

我在我的C ++控制台应用程序中使用Python C API 2.7.2。关于Python C API布尔对象有一个疑问

我正在使用:

PyObject* myVariable = Py_True;

我是否需要使用Py_DECREF(myVariable)来推导myVariable?

Python C API文档说: -

  

Python True对象。这个对象没有方法。它需要   就引用计数而言,就像任何其他对象一样对待。

我搜索了这些问题,但找不到明确的答案。

感谢。

2 个答案:

答案 0 :(得分:2)

  

就引用计数而言,它需要像任何其他对象一样对待。

这意味着当您参考

必须递增它
{
  Py_INCREF(Py_True);
  PyObject* myVariable = Py_True;

并且必须在处理它时减少它。

  Py_DECREF(myVariable);
}

答案 1 :(得分:0)

虽然它没有动态创建,但它必须被引用计数,因为PyObject变量可以包含任何Python对象。否则,需要检查Py_True和分散在整个Python运行时的其他特殊情况以及使用API​​的任何C / C ++代码。这将是混乱和容易出错。