当前位置: 首页 > 面试题库 >

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

叶炜
2023-03-14
问题内容

我已经用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如何在后台工作的更多知识(无论如何,使用SWIG时都将需要它)。



 类似资料:
  • 问题内容: 我想在Python中使用传统的C风格的循环。我想遍历字符串的字符,但也要知道它是什么,并且能够跳过字符(例如,代码中的5个字符)。 与并没有给我实际的for循环的灵活性。 问题答案: 简单的答案是在Python中没有简单,精确的C语句等效项。其他答案涵盖了使用带范围的Python语句。如果您希望能够在循环中修改循环变量(并影响后续的迭代),则必须使用循环: 但是在该循环中,一条语句将不

  • 我正在尝试使antlr C#g4语法与Python3中的antlr运行时一起工作。 下载文件夹中的antlr jar 同时在文件夹中下载lexer和解析器语法 通过对antlr JAR的java调用生成lexer和parser类 获取相关的类,这是lexer部分失败的事情,我将回到下面的错误 肮脏的代码 这段代码除了两件事外还可以工作: 首先,我发现了一些错误,这些错误似乎实际上是警告(请参阅Gi

  • 问题内容: 在新的Go语言中,如何调用C 代码?换句话说,如何包装我的C 类并在Go中使用它们? 问题答案: 更新: 我已经成功地将一个小型测试C ++类与Go链接在一起 如果您使用C接口包装C ++代码,则应该可以使用cgo调用您的库(请参阅中的gmp示例)。 我不确定C ++中的类概念是否真的可以在Go中表达,因为它没有继承。 这是一个例子: 我有一个C ++类定义为: 我想在Go中使用。我将

  • 问题内容: 如何设置Selenium与Python一起使用?我只想用Python编写/导出脚本,然后运行它们。是否有任何资源?我尝试使用谷歌搜索,但是发现的东西要么是指Selenium(RC)的过时版本,要么是Python的过时版本。 问题答案: 您是说Selenium WebDriver吗?… 先决条件 :根据您的操作系统安装Python 使用以下命令安装 并在您的代码中使用此模块 您还可以根据

  • 问题内容: 我打算为Python安装一个虚拟环境,以使我的Python包分开。这样做的动机之一也是在我的机器上同时存在两个版本的Python(Ubuntu 14.04)。我有以下奇观: 应该以什么顺序安装Python,PIP和virtualenv?有关系吗? 完成后,如何在virtualenv下将两个python版本分开? 假设我正在处理单独的项目,是否建议将每个项目都保存在virtualenv创

  • 问题内容: 我正在尝试对正在编写的C python扩展进行memcheck,但是我无法设置valgrind与python一起使用。我真的很感谢一些建议。仅出于上下文考虑,这是Ubuntu 13.10,python 2.7.5+和valgrind 3.8.1。 根据我的建议,我做了以下工作。 1)下载了python源 2)应用了代码补丁,即“在Objects / obmalloc.c中取消注释Py_