【问题标题】:Does Boost.Python need binding code for other boost libraries?Boost.Python 是否需要其他 boost 库的绑定代码?
【发布时间】:2014-02-24 13:43:57
【问题描述】:
我有一个继承自 boost::statechart 库的类。我需要在 Python 脚本中使用这个类,我想知道我是否需要为所有 boost::statechart 库编写包装代码(.def s)只是因为我的类继承自它?或者 boost.python 不需要任何包装代码来查看定义(它会自动处理其他 boost 库以在 python 中调用)?
【问题讨论】:
标签:
c++
boost
boost-python
boost-statechart
python-bindings
【解决方案1】:
Boost.Python 对 Boost 类没有任何特殊处理。如果您想要使用继承的函数(无论是否为 Boost 类),您需要将它们公开给 Python,就像使用您自己的代码一样。
如果您不想使用脚本中的任何基类函数,则除了绑定自己的代码外,您无需执行任何操作。
如果您需要(部分)Python 提供的基类接口,您有两种选择:
- 您单独绑定基类并公开它as a base for your class。这是最“完整”的解决方案(尽可能完整 - 您可以选择限制公开函数的数量)。
- 您没有绑定基类。 Python 不必知道继承关系。您可以简单地绑定要公开的函数,因为所有公共函数也是派生类的成员。如果您只需要 一些 可从 Python 使用的基类功能,这会更简单。