Boost.Python是否需要为其他Boost库绑定代码

Does Boost.Python need binding code for other boost libraries?

本文关键字:Boost 绑定 代码 其他 Python 是否      更新时间:2023-10-16

我有一个从boost::statechart库继承的类。我需要在Python脚本中使用这个类,我想知道是否因为我的类继承了它就需要为所有boost::statechart库编写包装器代码(.defs)?或者boost.python将不需要任何包装器代码来查看定义(它会自动处理其他boost库以在python中调用)?

Boost.Python对Boost类没有任何特殊处理。如果想要使用继承的函数(是否为Boost类),则需要将它们公开给Python,就像使用自己的代码一样。

如果不想使用脚本中的任何基类函数,那么除了绑定自己的代码之外,不需要做任何事情。

如果您需要(部分)Python提供的基类接口,您有两个选项:

  • 您单独绑定基类,并将其作为类的基类公开。这是最"完整"的解决方案(尽可能完整——您可以选择限制公开函数的数量)
  • 您不绑定基类。Python不必知道继承关系。您可以简单地绑定要公开的函数,因为所有公共函数也是派生类的成员。如果您只需要一些基类功能就可以从Python中使用,那么这会更简单