<p><strong>将C++类中的私有成员的操作函数设置为Python类中的属性</strong>
</p>
<p></p>
<p><strong>C++代码</strong>
:src.cpp</p>
<p>#include <iostream><br>
#include <string><br>
using namespace std;<br><br>
struct Var<br>
{<br>
Var(string name) : name(name), value() {}<br>
string const name;<br>
float value;<br>
};<br><br>
class A<br>
{<br>
public:<br>
void setname(string str)<br>
{<br>
m_name = str;<br>
}<br><br>
string getname()<br>
{<br>
return m_name;<br>
}<br><br>
private: <br>
string m_name;<br><br>
};</p>
<p></p>
<p><strong>python转换代码:</strong>
src4py.cpp</p>
<p>#include <boost/python.hpp><br>
#include "src.cpp"<br>
using namespace boost::python;<br>
BOOST_PYTHON_MODULE(test)<br>
{<br>
class_<Var>("Var", init<std::string>())<br>
.def_readonly("name", &Var::name) //这是固定格式的写法,请注意方法名称<br>
.def_readwrite("value", &Var::value) //这是固定格式的写法,请注意方法名称<br>
;<br>
//add_property 将C++类中的私有成员的操作函数设置为Python类中的属性,第一个为get 第二个为set<br>
class_<A>("A")<br>
.def("setname",&A::setname)<br>
.def("getname",&A::getname)<br>
.<strong>add_property("name",&A::getname,&A::setname)</strong>
//这是固定格式的写法,请注意方法名称<br>
;<br>
}</p>
<p></p>
<p>上述代码编译成so的过程略,详见<a href="http://blog.csdn.net/linkyou/archive/2011/04/14/6323940.aspx">http://blog.csdn.net/linkyou/archive/2011/04/14/6323940.aspx</a></p>
<p></p>
<p>python调用代码</p>
<p>import test</p>
<p></p>
<p>obj = test.A()<br>
obj.setname("test")<br>
print obj.getname()<br>
print obj.name<br>
obj.name = "haha"<br>
print obj.name<br></p>
<p></p>
分享到:
相关推荐
首先,将C++下的代码编译为动态库,并将生成的动态库命名为封装模块的名字,如:用BOOST_PYTHON_MODULE(Module_Name)宏对需要导出的函数、全局变量、类等导入Python的Module_Name模块,此时生成的动态库需要更名为...
该c++ web server基于boost.asio库编写,同时支持http和https协议。该工程基于vs2015编译通过,相关配置和说明见readme.txt
Boost.Asio C++ 网络编程 PDF 高清 非扫描 中文版
使用ONNXRuntime部署YOLOV7人脸检测关键点检测,含C++和Python两个版本.zip 代码完整下载可用,确保可以运行。 使用ONNXRuntime部署YOLOV7人脸检测关键点检测,含C++和Python两个版本.zip 代码完整下载可用,确保...
Boost.Asio provides an excellent abstraction over it, making sure that with a minimal amount of coding, you can create beautiful client-server applications and have tons of fun doing it. And it ...
为了方便大家使用MinGW(GCC)+_boost.python,特意只做了三个dll,可以很方便地将c++代码转为python模块. libboost_python-mgw45-1_49.dll libboost_python-mgw45-d-1_49.dll python27.dll 这三个文件我已放在资源...
基于OpenCV部署SCRFD人脸检测完整源码+全部数据(含C++和Python两版本).zip该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行!放心下载使用。 基于OpenCV部署SCRFD人脸检测完整...
使用C++扩展Python功能的方法.pdf
介绍:一个用python实现的...你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。 quantdsl 介绍: quantdsl包是Quant DSL语法在Python中的一个实现。Quant DSL 是财务定量分析领域专用语言
本人安装的是Python3,安装目录为C:\Python37; 1.下载boost库在windows下通过b2.exe自己尝试编译库文件,编译方法可参考本文。 boost库下载链接:下载链接 boost库编译方法:boost库编译方法 2.打开VS2019,新建类型...
基于OpenCV部署SCRFD人脸检测完整源码(含C++和Python两版本).zip使用OpenCV部署SCRFD人脸检测,包含C++和Python两种版本的程序实现,本套程序只依赖opencv库就可以运行, 从而彻底摆脱对任何深度学习框架的依赖。...
解决fatal error LNK1104: cannot open file 'python38_d.lib'问题 由源码得到,版本python3.8,下载后放入到python目录下的libs文件夹即可
python27.lib,python27.dll,python27_d.lib,python27_d.dll win32和x64都有,用python2.7.14源码编译,2.7.13亲测可用
解决fatal error LNK1104: cannot open file 'python37_d.lib'问题 由源码编译过来的文献,版本python3.7,下载后放入到python目录下的Lib文件夹即可
Python-C++交互技术简介 Python-C++交互技术简介
VS c++ 调用Python3.7.x版本的程序,缺少python37_d.lib链接库,这里为你提供,亲测可以使用。
Yolo+决策(C++)项目源代码.zip基于ROS的足球机器人视觉Python_Yolo+决策(C++)项目源代码.zip基于ROS的足球机器人视觉Python_Yolo+决策(C++)项目源代码.zip基于ROS的足球机器人视觉Python_Yolo+决策(C++)项目...
ubuntu下实现的在c++程序中调用python脚本的样例程序,可直接编译运行,需安装python-dev,供大家学习参考。修改后可在windows中使用
基于ONNXRuntime部署Transformer的端到端实时车道线检测源码(python和c++版本)+模型.zip基于ONNXRuntime部署Transformer的端到端实时车道线检测源码(python和c++版本)+模型.zip基于ONNXRuntime部署Transformer的...