我的C ++代码中包含以下内容:
if (1 != PyString_Check( key ))
我希望得到一个实际上类型的“char *”,以便提供更有用的错误消息。使用Python的C API,我该怎么做?
答案 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;