题
我用C ++实现了一个类。我想在Python中使用它。 请逐步建议并详细说明每一步。 这样的事......
class Test{
private:
int n;
public:
Test(int k){
n=k;
}
void setInt(int k){
n = k;
}
int getInt(){
return n;
}
};
现在,在Python中
>>> T1 = Test(12)
>>> T1.getInt()
12
>>> T1.setInt(32)
>>> T1.getInt()
32
请建议。我该怎么做? 注意:我想知道手动方式来做到这一点。我不想要任何第三方库依赖。
解决方案
查看 Boost.Python 。这是一个用C ++编写python模块的库。
另请参阅 SWIG ,它还可以处理其他脚本语言的模块。我以前用它来为我的类编写模块并在python中使用它们。效果很好。
您可以使用 Python / C API 手动完成,自己编写界面。这是相当低级的,但你将获得许多关于Python如何在幕后工作的额外知识(无论如何你将需要它。)
其他提示
ctypes 很不错。它非常易于使用,并且标配Python。不幸的是,它只能与具有C风格接口的共享库(Unix)或DLL(Windows)通信,这意味着您无法直接连接到C ++对象。但您可以使用句柄系统,其中句柄指的是特定对象。
>>> getInt(h)
12
我认为这很简单,易于理解,并且不需要额外的库。
我建议你尝试SWIG或sip(KDE / PyQt)。
SWIG链接: http://www.swig.org/
SIP链接: http://freshmeat.net/projects/python-sip/
这些可用于包装C ++类并为它们提供Pythonic接口。
不隶属于 StackOverflow