如何在嵌入式Python脚本的错误消息中打印PyObject的类型?

时间:2014-12-12 20:38:36

标签: python c++

我的C ++代码中包含以下内容:

if (1 != PyString_Check( key ))

我希望得到一个实际上类型的“char *”,以便提供更有用的错误消息。使用Python的C API,我该怎么做?

2 个答案:

答案 0 :(得分:5)

PyTypeObject* type = key->ob_type;
const char* p = type->tp_name;
std::cout << "My type is " << p << std::endl;

答案 1 :(得分:1)

从python 2.6开始,有a macro, Py_TYPE,应将其用于访问PythonObject的类型对象。然后,您可以获取包含该类型的标准名称的tp_name field。这意味着可以使用以下命令将对象obj的类型提取为C字符串:

const char* p = Py_TYPE(obj)->tp_name;