python_boost学习笔记3,类成员变量导入以及,属性添加

这里使用到的函数
#导入普通成员变量(公有成员变量)
boost::python::def_readwrite("member_name",& class::member) 
#导入只读成员变量(使用const 修饰的公有成员变量)
boost::python::def_readonly("member_name",& class::member)
#将多个个成员函数封装到一个属性当中
boost::python::add_property("property_name",& class::fun1,&class::fun2)
#include <string>

#include <sstream>



class SomeClass

{

        public:

                SomeClass(std::string n,std::string class_n) : name(n),class_name(class_n),mNumber(0.0) {}

                std::string name;  //将要到处的成员,注意被到处的成员必须是公有成员
                const std::string class_name;

                double getNumber() const { return mNumber; }

                void setNumber(double n)

                {

                        if (n>3.141592654)

                                n = -1;

                        mNumber = n;

                }



        private:

                double mNumber;

};





#include <boost/python.hpp>

using namespace boost::python;



BOOST_PYTHON_MODULE(boost_eg)

{

        class_<SomeClass>("SomeClass", init<std::string,std::string>())
                //导入类的公有的普通成员变量
                .def_readwrite("name", & SomeClass::name)
                //导入类的公有的只读成员变量
                .def_readonly("class_name",& SomeClass::class_name)
                //将2个成员函数封装到了一个属性number 中,如何使用这个属性看python脚本
                .add_property("number", &SomeClass::getNumber, &SomeClass::setNumber) 
                ;



}

python 代码

#!/usr/bin/env python
import boost_eg
m1 = boost_eg.SomeClass("Pavel"," m1")
print("class_name=",m1.class_name) #打印只读变量的值,只读变量只能读不能写
print ("name =",m1.name)
m1.name = "Gunther" #设置普通成员变量的值
print ("name =",m1.name)
m1.number = 7.3 #调用实际上是setNumber函数
print ("number =",m1.number) #m1.number 调用的实际上是getNumber函数

运行结果

class_name=  m1
name = Pavel
name = Gunther
number = -1.0
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值