Boost logo

Boost Users :

Subject: [Boost-users] Copy of a C++ object extended with Boost.Python
From: 4ian (dark4ian_at_[hidden])
Date: 2009-08-24 15:06:06


I have a simple C++ object, exposed to python with Boost.python, like
this :

-------------------------------------------------
BOOST_PYTHON_MODULE(MyModule)
{
   class_<MyObject>("MyObject")...
}
-------------------------------------------------

I call then python, making an instance of MyObject accessible :

-------------------------------------------------
MyObject anInstance;

object main_module((handle<>( borrowed( PyImport_AddModule
( "__main__" ) ) ) ) );
object main_namespace = main_module.attr( "__dict__" );
object myModule( (handle<>(PyImport_ImportModule("MyModule"))) );
main_namespace["anInstance"] = ptr(&anInstance);

try
{
   handle<> ignored(( PyRun_String( "anInstance.aNewMember = 1;print
anInstance.aNewMember;",
                                    Py_file_input,
                                    main_namespace.ptr(),
                                    main_namespace.ptr() ) ) );
}
catch ( error_already_set )
{
   PyErr_Print();
}
-------------------------------------------------

You can observe that I've added a member ( aNewMember ) to MyObject
instance.
But if I make a copy of my object :

-------------------------------------------------
MyObject anotherInstance = anInstance;

main_namespace["anotherInstance"] = ptr(&anotherInstance);

try
{
   handle<> ignored(( PyRun_String( "print
anotherInstance.aNewMember;",
                                    Py_file_input,
                                    main_namespace.ptr(),
                                    main_namespace.ptr() ) ) );
}
catch ( error_already_set )
{
   PyErr_Print();
}
-------------------------------------------------

I have a error saying that MyObject hasn't any "aNewMember" member.
What I have added with python has not been copied/transfered.
Is there a workaround to add permanently some new members to wrapped
objects ?


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net