如何检查 PyObject 是 Python C 扩展的字符串还是 Unicode
How to check if a PyObject is a String or Unicode for a Python C Extension
在 Python(2) 中,检查变量是 str
还是 unicode
类型的惯用方法是
isinstance(var, basestr)
在 Concrete Object Layer documentation 中,我没有看到任何类似 basestr
的东西。
目前我正在验证如下变量:
PyObject *key;
//...
if (!PyString_Check(key) && !PyUnicode_Check(key)) {
PyErr_SetString(PyExc_ValueError, "Key must be string");
return NULL;
}
有没有更简洁的方法来检查 PyObject
是 str
还是 unicode
类型?
有一个 PyBaseString_Type
(例如参见 [=14=],奇怪的是我在文档中也找不到它...)与 basestring
相同:
PyObject *key;
// ...
if (!PyObject_TypeCheck(key, &PyBaseString_Type)) {
PyErr_SetString(PyExc_ValueError, "key must be a string.");
return NULL;
}
在 Python(2) 中,检查变量是 str
还是 unicode
类型的惯用方法是
isinstance(var, basestr)
在 Concrete Object Layer documentation 中,我没有看到任何类似 basestr
的东西。
目前我正在验证如下变量:
PyObject *key;
//...
if (!PyString_Check(key) && !PyUnicode_Check(key)) {
PyErr_SetString(PyExc_ValueError, "Key must be string");
return NULL;
}
有没有更简洁的方法来检查 PyObject
是 str
还是 unicode
类型?
有一个 PyBaseString_Type
(例如参见 [=14=],奇怪的是我在文档中也找不到它...)与 basestring
相同:
PyObject *key;
// ...
if (!PyObject_TypeCheck(key, &PyBaseString_Type)) {
PyErr_SetString(PyExc_ValueError, "key must be a string.");
return NULL;
}