如何通过 boost::python 重命名构造函数的关键字参数
how to rename keyword argument of constructor by boost::python
我有一个 C++ class 比如:
class Foo {
public:
Foo(int param1 = 0, int param2 = 1);
}
我想在 python 中使用关键字参数调用它,如下所示:
foo = Foo(arg1 = 1)
或
foo = Foo(arg2 = 5)
我不知道如何通过 boost::python 重命名构造函数中的参数,有人可以帮助我吗?
提前谢谢你
要使用自定义名称和自定义默认值定义构造函数的 Python 签名,您可以按如下方式导出 class:
boost::python::class_<Foo>(
"Foo",
boost::python::init<int, int>(
(boost::python::arg("self"), boost::python::arg("arg1")=0, boost::python::arg("arg2")=1)
)
);
现在从 Python 开始,您将能够:
foo = Foo() # arg1 is 0, arg2 is 1
foo = Foo(1, 5) # arg1 is 1, arg2 is 5
foo = Foo(1) # arg1 is 1, arg2 is 1
foo = Foo(arg1=1) # arg1 is 1, arg2 is 1
foo = Foo(arg2=5) # arg1 is 0, arg2 is 5
注意:您不必声明 self
参数,但它改进了构造函数的文档字符串:
Foo.__init__( (object)self [, (int)arg1=0 [, (int)arg2=1]]) -> None
如果您使用 Sphinx 等文档生成器,这将很有用
我有一个 C++ class 比如:
class Foo {
public:
Foo(int param1 = 0, int param2 = 1);
}
我想在 python 中使用关键字参数调用它,如下所示:
foo = Foo(arg1 = 1)
或
foo = Foo(arg2 = 5)
我不知道如何通过 boost::python 重命名构造函数中的参数,有人可以帮助我吗? 提前谢谢你
要使用自定义名称和自定义默认值定义构造函数的 Python 签名,您可以按如下方式导出 class:
boost::python::class_<Foo>(
"Foo",
boost::python::init<int, int>(
(boost::python::arg("self"), boost::python::arg("arg1")=0, boost::python::arg("arg2")=1)
)
);
现在从 Python 开始,您将能够:
foo = Foo() # arg1 is 0, arg2 is 1
foo = Foo(1, 5) # arg1 is 1, arg2 is 5
foo = Foo(1) # arg1 is 1, arg2 is 1
foo = Foo(arg1=1) # arg1 is 1, arg2 is 1
foo = Foo(arg2=5) # arg1 is 0, arg2 is 5
注意:您不必声明 self
参数,但它改进了构造函数的文档字符串:
Foo.__init__( (object)self [, (int)arg1=0 [, (int)arg2=1]]) -> None
如果您使用 Sphinx 等文档生成器,这将很有用