c++ python交互之boost.python 简集之类(class , struct)

简介:
本章描述c++类,如何被python识别和使用
c++代码:src.cpp
#include <iostream>
#include <string>
using namespace std;

/**********************************************struct and class ***********************************/
struct A
{
void greet()
{
cout << "just a test! from A" << endl;
}

};

struct B
{
B(string msg): msg(msg) {}

void set(string msg)

this->msg = msg;
}

void greet()
{
cout << msg << endl;
}

string msg;
};

class C
{
public:
void greet()
{
cout << "just a test! from C" << endl;
}

};
pyhton转换代码:src4py.cpp
#include <boost/python.hpp>
#include "src.cpp"
using namespace boost::python;
BOOST_PYTHON_MODULE(test)
{
class_<A>("A")
.def("greet", &A::greet)
;

class_<B>("B",init<string>()) //注意构造函数的写法
.def("greet", &B::greet)
.def("set", &B::set)
;

class_<C>("C")
.def("greet", &C::greet)
;

//Constructors overload
class_<D>("D",init<string,int>())
.def(init<string>())
.def("printstr",&D::printstr)
.def("printint",&D::printint)
;

//if we do not wish to expose any constructors in E at all
class_<E>("E",no_init)
.def("printstr",&E::printstr)
;
class_<F>("F")
.def("initE",&F::initE)
.def("printEstr",&F::printEstr)
;
}
编译成so过程省略,如果要看makefile文件,请参照第一篇文章
python中调用代码test.py
import test

obj = test.A() //对应c++的struct A
obj.greet() //structA中的方法greet

obj = test.B("just a test! from B") //对应c++的struct B,且含构造函数
obj.greet()
obj.set("test again! from B")
obj.greet()

obj = test.C()
obj.greet()

obj = test.D("just a test!",1)
obj.printstr()
obj.printint()

#if we do not wish to expose any constructors in E at all
obj = test.F()
e = obj.initE("just a test!")
e.printstr()
obj.printEstr() 


本文转自elbertchen 51CTO博客,原文链接:http://blog.51cto.com/linkyou/751822,如需转载请自行联系原作者
相关文章
|
3月前
|
jenkins Shell 测试技术
|
4月前
|
供应链 新能源 调度
微电网调度(风、光、储能、电网交互)(Matlab&Python代码实现)
微电网调度(风、光、储能、电网交互)(Matlab&Python代码实现)
122 0
|
3月前
|
安全 jenkins Java
Java、Python、C++支持jenkins和SonarQube(一)
Jenkins 是一个开源的 持续集成(CI)和持续交付(CD) 工具,用于自动化构建、测试和部署软件项目。它基于 Java 开发,支持跨平台运行,并拥有丰富的插件生态系统,可以灵活地扩展功能
240 5
|
3月前
|
jenkins Java Shell
Java、Python、C++支持jenkins和SonarQube(全集)
Jenkins 是一个开源的持续集成(CI)和持续交付(CD)工具,用于自动化构建、测试和部署软件项目。它基于 Java 开发,支持跨平台运行,并拥有丰富的插件生态系统,可以灵活地扩展功能
328 1
|
3月前
|
jenkins Java 持续交付
Java、Python、C++支持Jenkins和SonarQube(三)
Python与Jenkins和SonarQube
106 1
|
3月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
3月前
|
jenkins Java 测试技术
|
8月前
|
人工智能 Python
[oeasy]python083_类_对象_成员方法_method_函数_function_isinstance
本文介绍了Python中类、对象、成员方法及函数的概念。通过超市商品分类的例子,形象地解释了“类型”的概念,如整型(int)和字符串(str)是两种不同的数据类型。整型对象支持数字求和,字符串对象支持拼接。使用`isinstance`函数可以判断对象是否属于特定类型,例如判断变量是否为整型。此外,还探讨了面向对象编程(OOP)与面向过程编程的区别,并简要介绍了`type`和`help`函数的用法。最后总结指出,不同类型的对象有不同的运算和方法,如字符串有`find`和`index`方法,而整型没有。更多内容可参考文末提供的蓝桥、GitHub和Gitee链接。
203 11
|
9月前
|
存储 C语言 Python
[oeasy]python077_int类型怎么用_整数运算_integer_进制转化_int类
本文主要讲解了Python中`int`类型的应用与特性。首先回顾了`int`词根的溯源,探讨了整型变量的概念及命名规则(如匈牙利命名法)。接着分析了整型变量在内存中的存储位置和地址,并通过`type()`和`id()`函数验证其类型和地址。还介绍了整型变量的运算功能,以及如何通过`int()`函数将字符串转化为整数,支持不同进制间的转换(如二进制转十进制)。此外,文章提及了关键字`del`的使用场景,对比了Python与C语言中`int`的区别,并总结了整型与字符串类型的差异,为后续深入学习奠定基础。
190 1
|
9月前
|
存储 安全 搜索推荐
课时15:Python的交互模式
今天给大家带来的分享是 Python 的交互模式以及计算机对 Python 的开发,分为以下三个部分。 1.Python的介绍 2.Python的结构 3.保存代码
172 2

推荐镜像

更多