如何通过 boost::p ython 重命名构造函数的关键字参数
how to rename keyword argument of constructor by boost::python
我有一个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
如果您使用文档生成器(例如狮身人面像等(,这将很有用。
相关文章:
- 应用于运算符而不是构造函数的显式关键字
- 如何通过 boost::p ython 重命名构造函数的关键字参数
- 在 new 关键字中,由默认构造函数初始化的类中的元素是否也使用 new 关键字在C++?
- 带有 "this" 关键字的 Java Copy 构造函数
- 为什么带有 const 关键字的构造函数可以工作,而没有它就不能工作?
- 当没有显式关键字与单参数构造函数一起使用时,编译器可以发出警告
- 使用 "using" 关键字继承基类的复制和移动构造函数
- 在构造函数中使用关键字 "this" 时定义复制构造函数
- 使用关键字继承构造函数时出乎意料的行为
- 显式关键字,移动构造函数和复制构造函数,并禁用移动和复制构造函数
- 构造函数使用多个参数时所需的显式关键字
- 构造函数显式关键字的使用
- 在结构构造函数中使用"this"关键字编译错误?-C++
- 模板类的构造函数在使用 new 关键字时调用类型构造函数
- 对单参数构造函数使用显式关键字
- 'explicit' g ++ 中的关键字对简单构造函数(不是复制/赋值构造函数)没有影响?
- 构造函数名称之前的关键字结构
- 为什么双参数构造函数以显式关键字开头
- 在std::auto_ptr的构造函数中使用' explicit '关键字有什么原因吗?
- 构造函数定义是否可以以 "class" 关键字为前缀?