如何从Python扩展中检查输入变量的有效性?

时间:2014-02-06 23:02:38

标签: python c++

我有一个用C ++编写的Python扩展,它希望bytearray作为第一个参数。它工作正常,但如果我从Python传递其他东西,如字符串或数字,我会得到一个分段错误。我如何检查输入是否真的一个bytearray,然后如果它是其他东西则引发异常?

1 个答案:

答案 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。