[C++-sig] Re: Accessing instances of C++ objects in Python - Plus more

David Abrahams dave at boost-consulting.com
Fri Apr 2 21:23:27 CEST 2004


Mike Gonzales <mgonzale at digipen.edu> writes:

> Thank you for your input - I am incorporating it to make my code neater and
> more precise.  Anyway, I guess my question devolves to this: How do I
> access a C++ variable from python, and what steps do I need to take?

You can either expose it as a static member of a class using
def_readonly or def_readwrite:

             class_<X>("X")
                .def_readwrite("foo", &some_variable)
                ;

and access it as:

    >>> your_extension_module.X.foo
    <representation of foo>


or you can enter it in your module dictionary:

   scope().attr("foo") = object(boost::ref(some_variable));

and access it as:

    >>> your_extension_module.foo
    <representation of foo>

> The most obvious hack that I thought of was to try and manually
> insert the python-wrapped C++ variable into the main module's
> namespace dictionary; Is there a better way than that?

HTH,

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com





More information about the Cplusplus-sig mailing list