使用boost_python使用c ++扩展python时,自定义数据类型具有空白属性

时间:2015-01-19 21:11:59

标签: python c++ opencv boost-python

这是我第一次为opencv函数编写python包装器。

我的项目的目的:在boost python的帮助下为c ++函数编写一个python包装器。

项目的复杂性:返回类型不是标准的。

a = mymodule.myfunction(args)

a的数据类型定义如下

struct pyopencv_DMatch_t {     PyObject_HEAD     cv :: DMatch v; };

我需要解决的问题:在编译之后,在python中导入mymodule.so,我发现pyopencv_DMatch_t类型的返回对象有空白属性,这意味着:

dir(a)的输出是[]

但是当我调试代码,并在第一次使用变量a之前设置断点,然后再次打印dir(a)时,我得到的输出不同:

[ 'DMatch',  '的',  '的 delattr ',  '的文档',  '的格式',  '的的getAttribute ',  '的散列',  '的初始化',  '',  '的减少',  '的 reduce_ex ',  '的再版',  '的 SETATTR ',  '的的sizeof ',  '的 STR ',  '的 subclasshook ',  '距离',  'imgIdx',  'queryIdx',  'trainIdx']

在其他工作中,在使用python代码导入mymodule后,如果我直接运行代码,我会收到一条错误消息,指出对象a没有属性'attribute_1',但如果我在第一次使用之前设置了一个断点变量a,暂停后由于断点,即使我什么也不做,代码可以正常运行。

我已经被这个问题困扰了好几天,真诚地感谢你的帮助或建议。

提前致谢。

0 个答案:

没有答案