[Pyhton] (re)binding class instance in python object
Hi, I have a plain C++ class which I want to exposed to python. The pyhton object accesses the C++ class via smart pointer. class Sensor : public boost::enable_shared_from_this<Sensor> { public: Sensor(int port); ~Sensor() void Open(); void SendCommand(const std::string& command); void Close(); private: int _port; }; auto sensorClassTypeObject = boost::python::class_<Sensor, boost:: shared_ptr<Sensor>>("Sensor", boost::python::init<int>()) .def("Open", &Sensor::Open) .def("SendCommand", &Sensor::SendCommand) .def("Close", &Sensor::Close); The question is: if I already have one instance of the C++ class (in a dependency injection container) then how can I create in the C++ part an instance of the python wrapper so that it does not create a new instance of Sensor, but uses my existing Sensor instance? Then I would put this instance into one of the python modules (this part would be made in C++) inside the python interpreter to be able to access it via script. Something like that: shared_ptr<Sensor> sensorInstance = DIContainer.Resolve<Sensor>(); boost::object pythonInstance = sensorClassTypeObject(sensorInstance); pythonInterpreterWrapper.AddToModule("__main__", pythonInstance); Best Regards, Tamas
participants (1)
-
Tamas.Ruszkai@leica-geosystems.com