2011-08-27 49 views
0

我想构建一个异常类,我可以在C扩展和导入扩展的Python模块中使用它们。我正在使用PyErr_NewException将该类创建为Exception类的超类,但我无法弄清楚如何为该类创建一个__init__构造函数。我认为这是用我需要的属性填充类的最好方法。试图在可以从Python模块实例化的C扩展中构建Python类

+0

到目前为止你有什么? – kindall

+0

PyObject * failure; PyObject * module = Py_InitModule3(“andro”,methods,moduleDocstring); int fd; 未签名的设备; Api api; if(module!= NULL) {//模块初始化成功 failure = PyErr_NewException(“andro.Failure”,NULL,Py_BuildValue(“{}”)); PyModule_AddObject(module,“Failure”,failure); –

回答

0

您应该通过dict作为PyErr_NewException的第三个参数。字典应该有一个__init__键绑定到您的初始化函数。

+0

我已经探索过,但我不能告诉什么样的对象与“__init__”键相关联。它是一个代码对象吗? –

+0

功能,我想。我在网上搜索时发现了一些半有趣的例子。 –