python类属性描述_把Python嵌入C++中类的成员属性的内容介绍

本文介绍了如何使用Boost.Python库在C++中创建Python类,并处理成员属性。通过示例代码展示了如何声明可读写属性、只读属性,以及如何处理私有成员。同时,也提及了C++类继承在Python中的映射。在Python中,可以直接调用编译好的C++模块并操作类的属性。

在C++中类的相关成员能使用关键字去声明为不一样的属性。但是在Python中则会依靠类的相关属性的命名的方式。以下的文章就是介绍把Python嵌入C++中类的成员属性的相关实际操作方案的介绍。

把Python嵌入C++中类的成员属性

在C++中类的相关成员能使用关键字去声明为不一样的属性。但是在Python中则会依靠类的相关属性的命名的方式。使用Boost.Python可以将其C++中类成员的属性传递给Python。如下所示代码使用Boost.Python来处理类成员的属性。将BOOST_PYTHON_MODULE中的代码改为如下所示。

BOOST_PYTHON_MODULE(Message)

{

class_("Message", init())

.def("set", &Message::set)

.def("get", &Message::get)

.def_readwrite("msg", &Message::msg);

;

}

此处将Message类中的成员msg设置为可读写,还可以使用“.def_readonly”将其设置为只读属性。对于类中的私有成员还可以使用“.add_property”将其操作函数设置为Python类中的属性。如下代码使用“.add_property”对私有成员进行操作。

BOOST_PYTHON_MODULE(Message)

{

class_("Message",init())

.add_property("msg",&Message::get,&Message::set);

}

以下代码在Python中使用编译好的Message模块。

>>>import Message

>>>s=Message.Message('hi')

>>>s.msg

'hi'

>>>s.msg='boot'

>>>s.msg

'boot'

4.类的继承

C++中类的继承关系也可以通过Boost.Python反映到Python模块中。以下代码将父类和子类分别导入到Python模块中。以下就是对Python嵌入C++中类的成员属性

#include

#include

#include

using namespace boost::python;

#pragma comment(lib, "boost_python.lib")

class Message

{

public:

std::string msg;

Message(std::string m)

{

mmsg= m;

}

void set(std::string m)

{

mmsg= m;

}

std::string get()

{

return msg;

}

};

class Msg:public Message

{

public:

int count;

Msg(std::string m):Message(m)

{

}

void setcount(int n)

{

count= n;

}

int getcount()

{

return count;

}

};

BOOST_PYTHON_MODULE(Message)

{

class_("Message",init())

.add_property("msg",&Message::get,&Message::set);

class_>("Msg",init())

.def("setcount", &Msg::setcount)

.def("getcount", &Msg::getcount);

以上就是对Python嵌入C++中类的成员属性相关的内容的介绍,望你会有所收获。

【编辑推荐】

【责任编辑:孙巧华 TEL:(010)68476606】

点赞 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值