You can solve it pretty much the same way. Expose a function __*etitem__. It would look something like this:
void set(thingy_t thingy&, int index, value_type& val){...} value_type get(const thingy_t thingy&, int index ){...} And then you export them in the class_ exposer: class_< thingy_t >("thingy_t") .def("__getstate__", &get) .def("__setstate__", &set) One wrinkle to watch out for: remember not to name the c++ functions starting with '__' Initial double underscores are reserved for the compiler. -----Original Message----- From: cplusplus-sig-bounces+matthew.scouten=tradingtechnologies....@python.org [mailto:cplusplus-sig-bounces+matthew.scouten=tradingtechnologies....@py thon.org] On Behalf Of Jakob van Santen Sent: Tuesday, August 04, 2009 8:23 AM To: cplusplus-sig@python.org Subject: [C++-sig] Keyed properties? Hello, I'm in the process of hiding the unnecessarily verbose parts of a C++ interface behind Python properties, and I've run in to a slight problem. We have a bunch of classes that expose private std::vectors via Get(int index) and Set(int index, value_type& val) methods. Ideally, I'd like to replace thingy.GetATWDGain(1) thingy.SetATWDGain(1, 254.5) with thingy.atwd_gain[1] thingy.atwd_gain[1] = 254.5 I know how I would solve this in pure Python (something similar to this: http://code.activestate.com/recipes/440514/), but I'm wondering if there's a clever way to do this in Boost.Python without messing around with the library itself. If anyone has done this already, I'd be curious to know how. Cheers, Jakob van Santen _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig