如何通过 boost::p ython 重命名构造函数的关键字参数

how to rename keyword argument of constructor by boost::python

本文关键字:构造函数 关键字 参数 重命名 ython 何通过 boost      更新时间:2023-10-16

我有一个C++类,如下所示:

class Foo {
public:
Foo(int param1 = 0, int param2 = 1);
}

我想用 python 中的关键字参数调用它,如下所示:

foo = Foo(arg1 = 1)

foo = Foo(arg2 = 5)

我不知道如何通过 boost::p ython 重命名构造函数中的参数,有人可以帮助我吗? 提前谢谢你

若要使用自定义名称和自定义默认值定义构造函数的 Python 签名,应按如下方式导出类:

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

如果您使用文档生成器(例如狮身人面像等(,这将很有用。