Espacio de nombres anidados con python



   AUTOR PREGUNTA

Publicado 29 julio 2014 - 22:44

¿Cómo puedo crear en Python un espacio de nombres anidado?


¿Tienes la misma pregunta? Yo también

 

Publicado 30 julio 2014 - 06:07

te dejo este ejemplo:
namespace py = boost::python;
std::string nested_name = py::extract<std::string>(py::scope().attr("__name__") + ".nested"); py::object nested_module(py::handle<>(py::borrowed(PyImport_AddModule(nested_name.c_str())))); py::scope().attr("nested") = nested_module; py::scope parent = nested_module; py::class_<a::A>("A")...

 

Publicado 30 julio 2014 - 06:08

Python no maneja un concepto como tal de espacios de nombres, sin embargo puedes utilizar clases para esta tarea:

include <boost/python/module.hpp>
#include <boost/python/class.hpp>
#include <boost/python/scope.hpp>
using namespace boost::python;
namespace a {
class A{};
namespace b {
class B{}; }
} 
class DummyA{};
class DummyB{};
BOOST_PYTHON_MODULE(mymodule) { 
scope a = class_<DummyA>("a") ;
class_<a::A>("A");
scope b = class_<DummyB>("b") ;
class_<a::b::B>("B"); }

   AUTOR PREGUNTA

Publicado 30 julio 2014 - 06:14

Gracias