当前位置:  开发笔记 > 编程语言 > 正文

我如何在Python中使用C++类?

如何解决《我如何在Python中使用C++类?》经验,为你挑选了3个好方法。

我用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

请建议.我怎么能这样做?注意:我想知道手动方式来做到这一点.我不希望任何第三方库依赖.



1> Johannes Sch..:

看看Boost.Python.这是一个用C++编写python模块的库.

另请参阅SWIG,它还可以处理其他脚本语言的模块.我以前用它来为我的类编写模块并在python中使用它们.效果很好.

您可以使用Python/C API手动完成,自己编写接口.这是非常低级的,但你将获得许多关于Python如何在幕后工作的额外知识(无论如何你将需要它).


不符合"我不想要任何第三方库依赖"的要求.
无论如何你将需要python库.它当然包括python/c api.

2> dan-gph..:

ctypes很好.它非常易于使用,并且标配Python.不幸的是,它只能与具有C风格接口的共享库(Unix)或DLL(Windows)通信,这意味着您无法直接连接到C++对象.但是您可以使用句柄系统,其中句柄指的是特定对象.

>>> getInt(h)
12

我认为这很简单,易于理解,并且不需要额外的库.


@ 2g7hgfdr8324,你错误引用了我的话.我没有说"你不能谈论共享库或DLL".我反过来说了.是的,如果您可以将C++ API公开为DLL,那么您可以通过ctypes从Python调用它.你的界面必须是普通的C,而不是C++.

3> batbrat..:

我建议你尝试SWIG或sip(KDE/PyQt).

SWIG链接:http
://www.swig.org/ SIP链接:http://freshmeat.net/projects/python-sip/

这些可用于包装C++类并为它们提供Pythonic接口.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有