我有一个用C ++编写的Python扩展,它希望bytearray作为第一个参数。它工作正常,但如果我从Python传递其他东西,如字符串或数字,我会得到一个分段错误。我如何检查输入是否真的一个bytearray,然后如果它是其他东西则引发异常?
答案 0 :(得分:0)
这应该有所帮助:http://docs.python.org/2/faq/extending.html#id8
要测试对象的类型,请先确保它不是
NULL
,然后使用PyString_Check()
,PyTuple_Check()
,PyList_Check()
等。
具体来说,看起来你想要这个:http://docs.python.org/2/c-api/bytearray.html#type-check-macros
int PyByteArray_Check(PyObject *o)
如果对象o是bytearray对象或bytearray类型的子类型的实例,则返回true。