Python_boost: notas de estudio 3, importación de variables de miembro de clase y adición de atributos

这里使用到的函数
#导入普通成员变量(公有成员变量)
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) 
                ;



}

código de 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函数

Resultado de la operación

class_name=  m1
name = Pavel
name = Gunther
number = -1.0
5 artículos originales publicados · Me gusta0 · Visitas 54

Supongo que te gusta

Origin blog.csdn.net/qq_40715157/article/details/105657774
Recomendado
Clasificación