Hi Earl, > So I would wrap member functions returning the shared_ptr, and store a
> persistent reference to the python object, returning its shared_ptr > instead? Yes. > > - Add all data attributes to the C++ object (and use .def_readonly() or > > .def_readwrite()). > > Then the state of the object is preserved naturally. > > > > - Inject additional Python methods as described in the Boost.Python tutorial: > > > > >http://www.boost.org/doc/libs/1_43_0/libs/python/doc/tutorial/doc/html/python> >/techniques.html#python.extending_wrapped_objects_in_python > > None of these methods would allow me to extend the individual > instances dynamically with attributes in python, correct? Yes. Do I understand correctly that you want to use the object essentially like a dictionary, just with obj.key instead of obj["key"]? I consider this bad practice, since it isn't obvious to readers of your code. Did you consider adding a boost::python::object member to your C++ object? That would solve all your problems I think and it would be obvious. If you need to keep your C++ code independent of Python, you could work with boost::any. > but isn't there some way to write a custom > to_python_converter to allow me to inject that code whenever a > shared_ptr is to be converted to python? I think you could make this work, but you'd have to maintain a registry. I'd look for a more conventional solution first. Ralf _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig