Python C API布尔对象

Python C API Boolean Objects

本文关键字:对象 布尔 API Python      更新时间:2023-10-16

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

我正在使用:

PyObject* myVariable = Py_True;

我需要尊重myVariable和Py_DECREF(myVariable)吗?

Python C API文档中写道:-

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

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

谢谢。

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

在引用计数方面,需要像对待任何其他对象一样对待它。

这意味着您在获取其参考时必须将其递增

{
  Py_INCREF(Py_True);
  PyObject* myVariable = Py_True;

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

  Py_DECREF(myVariable);
}