我有一个C python扩展名,我想打印一些诊断信息。
我收到一个字符串作为PyObject *。
获取此对象的字符串表示形式(使其可用作const char *)的规范方法是什么?
更新: 澄清以强调访问为const char *。
使用PyObject_Repr(模仿Python的repr函数)或PyObject_Str(模仿str),然后调用PyString_AsStringget char *(您可以并且通常应该将其用作const char*,例如:
PyObject_Repr
repr
PyObject_Str
str
PyString_AsString
char *
const char*
PyObject* objectsRepresentation = PyObject_Repr(yourObject); const char* s = PyString_AsString(objectsRepresentation);
任何人都可以使用此方法PyObject。如果您完全确定yourObject是Python字符串而不是其他字符串(例如数字),则可以跳过第一行,然后执行以下操作:
PyObject
yourObject
const char* s = PyString_AsString(yourObject);