views:

82

answers:

2

I am trying to translate the following code

d = {}
d[0] = None

into C++ with boost.python

boost::python::dict d;
d[0] = ?None

How can I get a None object in boost.python?

ANSWER:

boost::python::dict d;
d[0] = boost::python::object();
+2  A: 

You could use:

d[0] = d.get(0)

d.get defaults to None if you don't specify a default value.

wisty
+5  A: 

There is no constructor of boost::python::object that takes a PyObject* (from my understanding, a ctor like that would invalidate the whole idea if mapping Python types to C++ types anyway, because the PyObject* could be anything). According to the documentation:

object();

Effects: Constructs an object managing a reference to the Python None object.

Torsten Marek