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

时间:2014-02-24 13:43:58

标签: c++ boost boost-python boost-statechart python-bindings

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

1 个答案:

答案 0 :(得分:0)

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

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

如果您需要(某些)Python提供的基类接口,您有两个选择:

  • 您单独绑定基类并将其公开as a base for your class。这是最“完整”的解决方案(尽可能完整 - 您可以选择限制公开函数的数量)。
  • 您不绑定基类。 Python不必了解继承关系。您可以简单地绑定要公开的函数,因为所有公共函数也是派生类的成员。如果只需要基类功能的某些可以从Python中使用,这就更简单了。