我正在尝试定义一个具有多个构造函数方法的类,其中一些采用关键字参数。一切都按预期/预期工作,直到向构造函数传递了一个错误的参数列表,在这种情况下,解释器死亡而不是抛出异常。这是一个最小的例子:
#include <boost/python.hpp>
#include <string>
class Crash {
public:
Crash(std::string) { }
Crash(int, int) { }
};
BOOST_PYTHON_MODULE(mymodule) {
using namespace boost::python;
class_<Crash>("Crash", init<std::string>())
.def(init<int, int>((arg("i") = 3)))
;
}
输出:
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win 32
Type "help", "copyright", "credits" or "license" for more information.
>>> import mymodule as mm
>>> mm.Crash("asdf")
<mymodule.Crash object at 0x00D9FB70>
>>> mm.Crash(3)
<mymodule.Crash object at 0x00D9FE10>
>>> mm.Crash(4, i=5)
<mymodule.Crash object at 0x00D9FB70>
>>> mm.Crash(i=3) # kills the interpreter
输入无效的关键字,例如,Crash(blah=4)
也会杀死解释器。
这是一个 Boost.Python 错误,还是我做错了什么?
我正在使用 Boost 1.51 / Python 2.7.3 / MSVC 9.0。